[Ajax] Errore firefox

Ciao a tutti ho un'errore in firefox:

[Exception... "Component returned failure code: 0x80040111
(NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]"  nsresult: "0x80040111
(NS_ERROR_NOT_AVAILABLE)"  location: "JS frame ::

La pagina che mi dà errore ha questo codice:

<script language="javascript">
<!--
window.setInterval('sndReq()', 5000);

function createRequestObject() {
   var req = false;
   if (typeof XMLHttpRequest != "undefined")
      req = new XMLHttpRequest();
   if (!req && typeof ActiveXObject != "undefined") {
      try {
         req=new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e1) {
         try {
            req=new ActiveXObject("Microsoft.XMLHTTP");
         } catch (e2) {
            try {
               req=new ActiveXObject("Msxml2.XMLHTTP.4.0");
            } catch (e3) {
               req=null;
            }
         }
      }
   }

   if(!req && window.createRequest)
      req = window.createRequest();

   if (!req) alert("Il browser non supporta AJAX");

   return req;
}

var http = createRequestObject();

function sndReq() {
   
   http.open("GET", 'http://localhost/rcp.php?action=foo', true);
   http.onreadystatechange = handleResponse;
    http.send(null);
}

function handleResponse() {
if(http.status == 200) {
   if(http.readyState == 4){
      var response = http.responseText;
      var update = new Array();
document.getElementById('foo').innerHTML = "Caricamento in corso...";
      if(response.indexOf('|' != -1)) {
         update = response.split('|');
         document.getElementById('foo').innerHTML = update[1];
      }
   }
   }
}

Ho provato a cercare su google ma non ho trovato niente....  :'(

Qualcuno sà dirmi come posso risolvere?

 :bye:

inviato 9 anni fa
Marco Dario
modificato 9 anni fa
X 0 X

Non ho trovato niente online... Però ho "risolto" praticamente ho alzato il tempo di window.setInterval('sndReq()', 5000); e tolto la clausola per il sincronismo.

Una cosa vi raccomando... Questa:

http.open("GET", "http://localhost/rcp.php?action=foo&"+Math.random());

La funzione Math.random() genera un'id di sessione diversa ogni volta, meglio metterla altrimenti (con Internet Explorer sopratutto  ::) ) Il div non si aggiorna.

Spero di essere stato d'aiuto a qualcuno.  O0

 :bye:

risposto 9 anni fa
Marco Dario
X 0 X

Rieccomi,

Ho un'altro problemino, quando non ricevo una risposta dal server ricevo un'errore 'undefined'.

L'errore ovviamente è il classico quando una variabile definita non ha valore. come posso ovviare a ciò??

 :bye:

risposto 9 anni fa
Marco Dario
X 0 X

Ho risolto in questo modo:

function handleResponse() 
   {
      if(http.readyState == 4)
         {
            if(http.responseText){ 
#tutto il resto del codice...
         }
       }

Praticamente vado a controllare se la variabile esiste oppure no.

Nella console degli errori di firefox risulta ancora il famelico errore :'(

però nella pagina non mi stampa più "undefined".   ^-^

 :bye:

risposto 9 anni fa
Marco Dario
X 0 X

Ciao,

se posso darti un consiglio....trovo molto utile in genere usare librerie ad hoc per Ajax, ce ne sono fin troppe  >:D ...soprattutto di troppo complesse in genere. Ma tante volte ne trovi alcune che sembrano fatte appositamente per i tuoi usi...per es se hai un GMap, puoi usare le funzioni di Google, se hai Mootolos usi Ajax di Mootools, etc.  Ho notato che spesso con Ajax compaiono errori molto imprevisti...lavorare con librerie ti permette di usare codice usato da migliaia di utenti e risolvere quindi subito i problemi.

Inoltre, se nel tuo esempio usi una richiesta ritardata per aspettare il caricamento pagina, potresti mettere il tutto nell'evento body onload.

 :bye:

risposto 9 anni fa
robertomigli
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda