Jeigu dirbate su ajax, tikriausiai pastebėjote, jog tuo pačiu komponentu siunčiant antrą užklausą, kai pirmoji nepabaigta įvyksta klaida. Naršyklės išmeta klaidą, sustoja šios ajax užklausos. Tačiau kad taip neatsitiktu galime idėti filtra.

Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED)
[nsIXMLHttpRequest.send]” nsresult: “0xc1f30001
(NS_ERROR_NOT_INITIALIZED)”

Filtras:

  1.  function query(adr,handle) {
  2. var browser = navigator.appName;
  3.  if (http.readyState==1) {
  4.   if (browser != “Microsoft Internet Explorer”) {
  5.    http.onreadystatechange = function() {};
  6.   }
  7.   http.abort();
  8.  }

Tiesiog ši koda įterpkite į savo ajax vykdymo pradžią. Nepamirškit http pakeisti į jūsų naudojamą ajax objektą.

O dabar kaip viskas veikia.

var browser = navigator.appName; //bus mum reikalingas nustatatnt naršyklę if (http.readyState==1) { //patikrinam ar mūsų ajax komponento (http) vykdymas lygus 1 (loading)

if (browser != “Microsoft Internet Explorer”) { //patikrinam ar naršyklė IE. Galbūt sugalvosite geresnį buda patikrinti

http.onreadystatechange = function() {}; // išvalome onreadystatechange, tam kad su FF viskas būtų tvarkoje

http.abort(); //sustabdom ajax buvusį querį, kad galėtu kuo puikiausiai dirbti naujas

Be to, jeigu kas nors paklausite, kodėl negaliu tiesiog patikrinti http.onreadystance, ir esant 4 vykdyti, tai viskas veiks, tačiau nulužus serveriui gali kilti bėdų, tarkim operoje bus bandomas įkrauti duomenis iš nulužusio serverio, tol kol duomenys bus gauti, tokiu atveju, teoriškai kol negaus duomenu operą, sustos bet koks ajax vykdymas.