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
Data: cze 22, 2006