Autor Zpráva
yoyer
Profil
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 *
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
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 *
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

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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

0