Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente bannato
    Registrato dal
    Jan 2006
    Messaggi
    100

    XMLHttpRequest non passa mai allo stato 4

    ciao
    sto facendo una semplice applicazione che interroga una pagina aspricevendone un file xml
    la pagina asp se aperta in un browser restituisce un file xml perfettamente formattato del peso di meno di 1KB

    vedendo che non succedeva niente lato ajax ho disattivato un controllo su readystate ed ha cominciato a darmi errori dicendo che non era possibile creare l'oggetto xml

    facendo qualche altro controllo mi sono accorto che il readystate dell'oggetto XMLHttpRequest rimane perennemente a 1, cioè caricamento...
    ma de che? deve caricare solo qualce byte...

    il codice in questione è il seguente:
    Codice PHP:
      function interroga_db_messaggi() {
        if (
    obj_ricevi.readyState == || obj_ricevi.readyState == 0) {
          
    obj_ricevi.open("GET"'pagina.asp?id_ultimo_messaggio=' ultimo_messaggiotrue);
          
    obj_ricevi.onreadystatechange elabora_interrogazione(); //elabora la risposta dal server
          
    obj_ricevi.send(null);
        }    
      }


      function 
    elabora_interrogazione() {
        if (
    obj_ricevi.readyState == 4) {
          
    obj_xml obj_ricevi.responseXML//tutto l'albero xml
          
    ultimo_messaggio obj_xml.getElementsByTagName("ultimo_messaggio"); //mi segno l'id dell'ultimo messaggio inserito
          
    div_messaggi.innerHTML div_messaggi.innerHTML ultimo_messaggio ' ' 
          
    xml_messaggi obj_xml.getElementsByTagName("messaggio"); //i nodi dei messaggi
          
    var num_messaggi xml_messaggi.length//totale dei messaggi presenti nell'xml
          //ciclo tra i messaggi
          
    for (0num_messaggii++) {
            
    //estraggo i dati
            
    xml_utente xml_messaggi[i].getElementsByTagName("utente");
            
    xml_ora xml_messaggi[i].getElementsByTagName("ora");
            
    xml_testo xml_messaggi[i].getElementsByTagName("testo");
            
    //ed alla fine aggiorno il div
           
    div_messaggi.innerHTML div_messaggi.innerHTML 
                                     
    '<p style="margin-top:10px; margin-bottom:0px;">' xml_ora ' [b]' xml_utente '[/b]:</p>' 
                                     
    '<p style="margin-left:10px; margin-top:0px;">' xml_testo '</p>'
          
    }
        }
      } 

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    non ho letto tutto ma qui c'è di sicuro un errore.

    obj_ricevi.onreadystatechange = elabora_interrogazione;

    va senza parentesi
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente bannato
    Registrato dal
    Jan 2006
    Messaggi
    100
    maledette parentesi

    adesso funziona un po meglio, solo che mi restituisce come valore sempre [object HTMLCollection]

    meglio di niente

  4. #4
    Utente bannato
    Registrato dal
    Jan 2006
    Messaggi
    100
    per completezza il file xml generato dalla pagina asp è:
    Codice PHP:
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <app>
      <errore val="0"></errore>
      <ultimo_messaggio>2</ultimo_messaggio>
      <messaggio>
        <ora>16:41</ora>
        <utente>aaa</utente>
        <testo>ciaooooooooooooooooooooooooooo</testo>

      </messaggio>
      <messaggio>
        <ora>17:00</ora>
        <utente>bbb</utente>
        <testo>bbbbbbbbbbbbbbbbbbbbbbbbb</testo>
      </messaggio>
    </app>

  5. #5
    Originariamente inviato da s0r42
    adesso funziona un po meglio, solo che mi restituisce come valore sempre [object HTMLCollection]
    come da manuale, ovvero ti restituisce esattamente quello che restituisce una chiamata a getElementsByTagName ... una HTMLCollection
    (e non si capisce perchè per i messaggi fai il cilco for mentre per i nodi no ... a sto punto non si capisce nemmeno perchè hai quel tag nell'XML, totalmente superfluo se è per sapere quanti nodi ci sono col nome messaggio)
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    Utente bannato
    Registrato dal
    Jan 2006
    Messaggi
    100
    Originariamente inviato da andr3a
    come da manuale, ovvero ti restituisce esattamente quello che restituisce una chiamata a getElementsByTagName ... una HTMLCollection
    (e non si capisce perchè per i messaggi fai il cilco for mentre per i nodi no ... a sto punto non si capisce nemmeno perchè hai quel tag nell'XML, totalmente superfluo se è per sapere quanti nodi ci sono col nome messaggio)
    sei stato ermetico (almeno per me) ma mi hai indirizzato verso la soluzione

    non ho ben capito la parte del ciclo

    il tag ultimo_messaggio mi indica qual'è l'id dell'ultimo record inserito nel database e mi serve all'interno di un ciclo altrove

  7. #7
    getElementsByTagName restituisce una HTMLCollection ovvero una lista di tutti i tag con quel nome, che sia uno solo, tanti o nessuno.

    Se sei certo che di ultimo_messaggio ce ne sia solo uno allora fai

    ultimo_messaggio = obj_xml.getElementsByTagName("ultimo_messaggio")[0];

    questo vale anche per tutti gli altri tag cercati all'interno del ciclo for ..


    xml_utente = xml_messaggi[i].getElementsByTagName("utente")[0];

    ... e così via ... solo getElementById ti da direttamente l'elemento ... che deve avere un id univoco
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #8
    Utente bannato
    Registrato dal
    Jan 2006
    Messaggi
    100
    grazie adesso funzia

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.