Jak naprawić bug w Firefox dla obiektu HttpRequest – błąd 0xc1f30001 (NS_ERROR_NOT_INITIALIZED)?

Błąd 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) w Firefox można naprawić dodając następującą procedurę:

if (isBusy){ http.abort(); }

Jeśli obiekt HttpRequest jest nie gotowy, np w sytuacji onKeyup gdy użytkownik przeładowuje skrypt wielokrotnie i bardzo szybko, należy wywołać metodę abort()

Poniżej cały kod odporny na bug w firefox

try {
     http = new XMLHttpRequest(); /* e.g. Firefox */
} catch(e) {
     try {
          http = new ActiveXObject("Msxml2.XMLHTTP"); /* some versions IE */
     } catch (e) {
          try {
               http = new ActiveXObject("Microsoft.XMLHTTP"); /* some versions IE */
          } catch (E) {
               http = false;
          }
     }
}
var isBusy = true;
var url = "lib/szukaj_wykonawcy.php?param=";
function dopasuj_wykonawce()
{
     var idValue = document.getElementById("wykonawca_szukaj").value;
     var myRandom = parseInt(Math.random()*99999999); // cache buster
     if (isBusy){ http.abort();     }
     http.open("GET", url + escape(idValue) + "&rand=" + myRandom, true);
     isBusy = true;
     http.onreadystatechange = handleHttpResponse;
     http.send(null);
}
function handleHttpResponse() {
     if (http.readyState == 4) {
          isBusy = false;
          document.getElementById("hiddenDIV2").style.visibility="visible";
          document.getElementById("hiddenDIV2").innerHTML=http.responseText;
     }
}
function loadrecord(record) {
     document.location.href="http://akulik.nazwa.pl/guitarnet_pl_div/spiewnik.php?id="+record;
}
// koniec AJAX

źródło: lokaty bankowe, dentysta gorzów, helpdesk it

Powiązane wpisy:

Comments are closed.