Ajax kódom minden harmadik kérdésre kiakad
Van egy kis gondom az alábbi ajax kóddal firefox alatt: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? :-)
■ - // 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;
- }
- }
Láttok benne valami hibát? :-)
hiba
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
A böngésző nem jelzett semmi hibát, viszont a 2. alert már nem futott le.
Végre
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 :-)