ugrás a tartalomhoz

Ajax kódom minden harmadik kérdésre kiakad

YourSoft · 2007. Ápr. 6. (P), 09.27
Van egy kis gondom az alábbi ajax kóddal firefox alatt:
  1. // Ajax lekeresek  
  2. function createRequestObject() {  
  3.  var ro;  
  4.  var browser = navigator.appName;  
  5.  if(browser == "Microsoft Internet Explorer"){  
  6.   ro = new ActiveXObject("Microsoft.XMLHTTP");  
  7.  }else{  
  8.   ro = new XMLHttpRequest();  
  9.  }  
  10.  return ro;  
  11. }  
  12. var http = createRequestObject();  
  13. var ajaxReqBusy = false;  
  14. function sendReqAjax(url) {  
  15.    if (ajaxReqBusy) {  
  16.     setTimeout("sendReqAjax('"+url+"')", 100);  
  17.    } else {  
  18.     ajaxReqBusy = true;  
  19. //    setBusy();  
  20.     http.open('get', url);  
  21.     http.onreadystatechange = handleAjaxResponse;  
  22.     http.send(null);  
  23.    }  
  24. }  
  25. function handleAjaxResponse(){  
  26.  if(http.readyState == 4){  
  27.   if (http.status == 200) {  
  28.    var response = http.responseText;  
  29.    var update = new Array();  
  30.    if(response.indexOf('|' != -1)){  
  31.     update = response.split('|');  
  32.     for (i=0;i<update.length;i=i+2){  
  33.      document.getElementById(update[i]).innerHTML = update[i+1];  
  34.     }  
  35.    }  
  36.   } else {  
  37.    alert('Hiba a hálĂłzati kapcsolatban! : '+http.status);  
  38.   }  
  39. //  unsetBusy();  
  40.   ajaxReqBusy=false;  
  41.  }  
  42. }  
Kb. stabilan minden 3. kérésre kiakad, és nem megy több kérés a szerver felé. Az ajaxReqBusy értéke false. Ráfut a "http.open('get', url);" sorra és ott akad ki, ha eléje hozom a " http.onreadystatechange = handleAjaxResponse;" sort, amúgy meg fordítva.

Láttok benne valami hibát? :-)
 
1

hiba

YourSoft · 2007. Ápr. 6. (P), 14.12
Az a furcsa, hogy IE alatt minden tökéletes.

Most bekapcsoltam a firebug-ot is.
Ez ezt a hibát dobja ekkor:
uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.open]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: javascript: eval(__firebugTemp__); :: anonymous :: line 1" data: no]

Firebug nélkül egy alert volt a
  1. http.open('get', url);  
előtt és egy másik utána.
A böngésző nem jelzett semmi hibát, viszont a 2. alert már nem futott le.
2

Végre

YourSoft · 2007. Ápr. 6. (P), 14.23
Megvan a megoldás :-)
A probléma az volt, hogy ebből az ablakból nyitottam egy másikat, amelyből visszatéréskor a szűlő ablak egy funkciója hívódott meg.
Ez a funkció hívott egy ajaxot a visszatérési eredménnyel.
3. ilyen után akadt ki.
Most úgy csinálom, hogy visszatérésként setTimeout-al hívom meg a szülő funkcióját így működik.
Úgy tűnik mindig annál a sornál, mindig a 3. lekérésnél akadt meg. Elég érdekes :-)