Autor | Zpráva | ||
---|---|---|---|
yoyer Profil |
#1 · Zasláno: 24. 2. 2008, 08:36:17
Dobrý den, rozhodl jsem se na svých stránkách použít metodu AJAX, jenže jsem narazil na problém: nejde mi použít jeden objekt na více dotazů na server. Je to záměrné? Dá se nějak objekt znovu použít nebo musím vytvořit nový? Nový objekt jsem se už vytvořit pokusil, ale proměnná s objektem zůstala jen v posílací funkci a tak to nefungovalo, dá se to nějak vyřešit?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta name="generator" content="PSPad editor, www.pspad.com"> <title>test</title> <script> //tady je vytvoření obj var ajax = (window.XMLHttpRequest ? new XMLHttpRequest() : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false)); if(!ajax){ alert("Zřejmě váš prohlížeč nepodporuje metodu AJAX. Prosím aktualizujte váš prohlížeč."); } ajax.onreadystatechange= function () {zpracujdata(); } ; //nastavíme funkci při změně stavu nešeho dotazu //zde začínají funkce function senddata(data){ //funkce pro poslání dat ajax.open("POST", "game.py/debug", true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.send("data="+data); } function zpracujdata(){//zpracování dat var txt; if (ajax.readyState == 4){ //bylo odpovězeno if(ajax.status == 200 || ajax.status==0){ txt=ajax.responseText; document.getElementById('result').innerHTML=txt //debug.. zkopírujeme výsledek do result } else alert("Nastala chyba na serveru: "+ ajax.status +":"+ ajax.statusText); } } </script> </head> <body> <input type="submit" name="button" value="call" onclick="senddata('')"/> <div id="result"></div> </body> </html> je to tady.. |
||
los Profil * |
#2 · Zasláno: 24. 2. 2008, 10:10:58
Nastav onreadystatechange až po otvorení požiadavky:
ajax.open("POST", "game.py/debug", true); ajax.onreadystatechange = zpracujdata; //nastavíme funkci při změně stavu našeho dotazu |
||
Leo Profil |
#3 · Zasláno: 24. 2. 2008, 11:25:20
Jeste poznamku - objekt XMLHttpRequest se samozrejme pouzit da, ale
1, jen pokud je readyState roven 0 (jeste nic nezacal delat) nebo 4 (predchozi pozadavek dokoncil) 2, nemate jistotu v jakem poradi se jednotlive pozadavky provedou 3, pocet soucasnych http spojeni na dany server je dost omezeny (napriklad v IE jsou to 2 - slovy DVA - za sekundu) Leo |
||
los Profil * |
#4 · Zasláno: 24. 2. 2008, 12:04:08
Ak sa bavíme o znovupoužívaní objektu XMLHttpRequest (nie o všeobecnom používaní viacerých objektov XMLHttpRequest), tak:
1. nie je potrebné nejako špeciálne kontrolovať readyState 2. nemá zmysel uvažovať o poradí 3. nevytvárajú sa dve súčasné pripojenia |
||
Časová prodleva: 16 let
|
0