Autor Zpráva
souki
Profil
Potřeboval bych poradit s AJAXem. Trápím se s tím už dlouho a pořád nemůžu nic najít. Přiznávám, že JS není moje silná stránka.
Je nějaký způsob jak dostat data získaná přes AJAX přímo do proměnné? Chtěl bych ale zachovat komunikaci s PHP v jedné funkci. Tzn. že si zavolám třeba
ajax("ajax.php?akce=pridejuzivatele","franta")
a vrátí mi to id přidaného uživatele. Zkoušel jsme to řešit přes globální proměnnou a podobně, ale nikdy jsem nedokázal obejít zpoždění.
Budu vděčný i za nakopnutí správným směrem...
venca12
Profil
Člověče, nevím co je to za funkci ta ajax();, kterou zde uvádíte, ale já doposud žil v domění, že Ajax je název pro technologii/technologie komunikující se serverem, bez nutnosti refreshe stránky (laicky řečeno). A k tomu aby jste mohl Ajax použít, musíte si vybrat jeden z dostupných prostředků. Pokud se bavíme o javascriptu, volba padne asi na XMLHttp. I když jak teď nad tím přemýšlím, nestáhnul jste si někde nějakou knihovnu, která má tuhle funkci ajax, ve který je volán XMLHttp objekt a který má nastavený asynchronní přenos, proto se nemůžete poprat s tím spožděním? No asi jo. Pro vás je důležitý třetí parametr XMLHttp, který určuje, zda se jedná o synchronní, anebo asynchronní přenos. Synchronní čeká na odezvu serveru a nevykonává další příkazy asynchronní ne, jasný.

Zkuste si naprogramovat, pro inspiraci můžete použít následující:
if (document.all)

// pro explorer, u nej se musi vsechno jmenovat jinak
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
else
// pro normalni prohlizec
var xmlhttp = new XMLHttpRequest();

// poslu mu to tam metodou get, false znamena synchronni prenos, tudiz klient ceka na odpoved a nepokracuje v praci, v opacne pripade pokracuje a odpoved si budete muset odchytnou jinde
xmlhttp.open("GET", "skript.php?hodnota=" + hodnota, false);
// provedu odeslani
xmlhttp.send("");

// ziskam odpoved ze serveru (odpoved je to, co php skript vygeneruje)
odpoved = xmlhttp.responseText;
souki
Profil
Ta funkce "ajax" byl jen příklad.
Tohle všechno vím, ale chybí trochu praxe. Vycházel jsem z tohoto skriptu
http://www.ms.mff.cuni.cz/~malej9am/vyuka/js/ajax/
a zde je odpověď vázána na onreadystatechange ztn získá se až když je readyState==4
Abyc nemusel neustále vypisovat celé spojení, tak jsem si to zabalil do funkce "ajax", která se volá parametry url, co poslat. A ejjí návratovou hodnotou měla být odpověd. Podle toho co píšete to znamená, že nemusím čekat až readyState==4 a stačí do funkce anpsat return xmlhttp.responseText; a skript stojí dokud odpověď nezíská?
souki
Profil
Tak jsem to vyřešil.... celý můj problém byl v nastavení xmlhttp.open("GET", "skript.php?hodnota=" + hodnota, false); na neasynchronní přenos
Toto téma je uzamčeno. Odpověď nelze zaslat.

0