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:

// Ajax lekeresek
function createRequestObject() {
 var ro;
 var browser = navigator.appName;
 if(browser == "Microsoft Internet Explorer"){
  ro = new ActiveXObject("Microsoft.XMLHTTP");
 }else{
  ro = new XMLHttpRequest();
 }
 return ro;
}
var http = createRequestObject();
var ajaxReqBusy = false;
function sendReqAjax(url) {
   if (ajaxReqBusy) {
    setTimeout("sendReqAjax('"+url+"')", 100);
   } else {
    ajaxReqBusy = true;
//    setBusy();
    http.open('get', url);
    http.onreadystatechange = handleAjaxResponse;
    http.send(null);
   }
}
function handleAjaxResponse(){
 if(http.readyState == 4){
  if (http.status == 200) {
   var response = http.responseText;
   var update = new Array();
   if(response.indexOf('|' != -1)){
    update = response.split('|');
    for (i=0;i<update.length;i=i+2){
     document.getElementById(update[i]).innerHTML = update[i+1];
    }
   }
  } else {
   alert('Hiba a hálózati kapcsolatban! : '+http.status);
  }
//  unsetBusy();
  ajaxReqBusy=false;
 }
}
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
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 :-)