Autor Zpráva
randy
Profil *
Zdravim,

mozna by to patrilo spis do JS fora, ale s PHP to ma taky co delat :-)

Mam problem, mam nejakej formular, kam jsem pridal k jednomu textovemu poli AJAX naseptavac, pricemz kdyz se na hodnotu v naseptavaci klikne, logicky by se mela objevit v tom textovem poli.

Pri psani do textoveho pole se AJAXem zavola externi skript, ktery vraci vysledky.

Vysledky v naseptavaci vypisuji v DIVech, v nichz je odkaz, ktery ma nastaveny onclick="nastav_hodnotu_do_text_pole('hodnota z naseptavace')"

Ovsem toto nefunguje

Pokud nepouziji AJAX, ale vypisu ty hodnoty primo v tom skriptu ktery generuje formular, tak to funguje a hodnota se nastavi, ovsem pokud to nacitam pres AJAX, tak se po kliknuti naseptavac jen zavre, ale nic se nenastavi.

Nevedel by nekdo cim to je? Diky
Chamurappi
Profil
Reaguji na randyho:
Nevěděl. Dáváš nám nedostatek informací, prosím o odkaz na živou ukázku.
randy
Profil *
To bohuzel nejde, mam to na localhostu.

Ale zeptam se jinak. Je mozne, ze kdyz tu JS funkci volam z externiho souboru, tzn HTML ktere tento soubor generuje, se primo neobjevi v HTML kde je ten formular a ta JS funkce kterou volam, ze to nemuze fungovat?

Zkratka mam dva PHP skripty, jeden generuje HTML formular a je v nem i JS funkce, druhy PHP skript je volan AJAXem a generuje HTML s vysledky ktere vraci prvnimu skriptu, a zaroven v tom vyslednem HTML obsahuje mista, kde se vola ta JS funkce v prvnim souboru (pomoci onclick).

Je mozne ze toto nefunguje? Ja totiz mam pocit ze to fungovat musi, aspon vsude jinde kde jsem neco podobneho videl, se to tak normalne dela.


Jeste jednou podotykam, ze pokud zkusim zkusim vynechat ten extreni soubor, ale ten jeho vystup primo vlozim do toho HTML formulare v prvnim skriptu, tzn vynecham AJAX, tak to normalne funguje, tzn HTML naseptavace je tam sice natvrdo, ale pokud v nem na neco kliknu, hodnota se zobrazi v textovem poli, jak jsem chtel.

Snad je to takto jasne. Diky
randy
Profil *
Ta jsem zkusil do onclicku napsat alert('Ahoj'); a tez to nefugnuje.

Tzn problem je, ze z toho generovaneho HTML nelze volat JS, normalne bych se tomu asi nedivil, protoze nejsem zadnej JS expert, ale bud prehlizim nejaky zasadni fakt, anebo se tohle bezne u AJAXu pouziva, coz si myslim ze je pravdepodobnejsi protoze to vsude kde AJAX je vidim. Pak ale nechapu proc mi to nefugnuje :-)
svadla
Profil
randy

pravdepodobne chyba v kodu, bud nam napis kod, nebo zkus ladit pomoci chybove konzole a firebugu ve FF
Chamurappi
Profil
Reaguji na randyho:
To bohuzel nejde, mam to na localhostu.
Nahrát to na web nejde?

Je mozne, ze kdyz tu JS funkci volam z externiho souboru, tzn HTML ktere tento soubor generuje […], ze to nemuze fungovat?
Je to možné. Při měnění innerHTML se nevykonávají elementy <script> v přiřazovaném kódu.
randy
Profil *
Dobre, tak tedy kod...

Formulář:


<script type="text/javascript" src="/js/prototype.js"></script>
<script type="text/javascript">
//<![CDATA[
      				function init()
              {
                if($("destination"))
                {
                  $("search-result").hide();

        					Event.observe("destination", "keyup", search);
        					Event.observe("destination", "blur", close);
      					}
      				}

              function setVal(id, str)
              {
                $("destination_id").value = id;
                $("destination").value = str;

                $("search-result").hide();
              }

              function close()
              {
                $("search-result").hide();
              }

      				function search()
              {
      						new Ajax.Request("get_ajax.php?q=" + escape($F("destination")), {

      							method:\'get\',

      							onComplete: function(transport){
      								var response = transport.responseText;
      								var res = $("search-result");
      								res.innerHTML = response;
      								res.show();
      							},

      							onFailure: function(){
      							  $("search-result").hide();
      							}
      						});
      				}

      				Event.observe(window, "load", init);
          
//]]>
</script>

<form name="dest-form" action="" method="post">

<input type="text" id="destination" name="destination" onkeyup="search(this.value);" autocomplete="off" value="" />

  <div id="search-result" class="search-result" style="background-color: #ffffff; border: 1px #000000 solid;">
  </div>

<input type="hidden" name="destination_id" id="destination_id" value="" />

</form>






Extrení soubor pro Ajax:


  include 'includes/db.php';

  header('Content-Type: text/html; charset=utf-8');

  if(isset($_GET['q']))
  {
    $query = mysql_query("SELECT `z`.* FROM `zeme` AS `z` WHERE z.nazev LIKE '%".addslashes($_GET['q'])."%' ORDER BY nazev ASC LIMIT 15");

    if(mysql_num_rows($query) > 0)
    {
      while($result = mysql_fetch_assoc($query))
      {
        echo '  <div class="result">'."\r\n";
        echo '    <a href="#" onclick="setVal('.intval($result['id']).', \''.htmlspecialchars($result['nazev']).'\');">'.htmlspecialchars($result['nazev']).'</a>'."\r\n";
        echo '  </div>'."\r\n";
      }
    }
  }

randy
Profil *
Podotykam, ze naseptavac data zobrazuje, pouze nefunguje onclick="setVal(***);"

Zkousel jsem misto setVal() napsat alert('Ahoj'); ale take nic

Diky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: