Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    ajax: sulla funzione di callback

    Il codice nella funzione di callback che ho sempre visto è:

    codice:
    //impostazione della funzione di callback
    objHTTP.onreadystatechange = function() 
    {
    	if (objHTTP.readyState == 4) 
    	{
    		if (objHTTP.status != 200) {/* gestione errore */ return;}
    
    		//utilizzo di responseText
    		var t = objHTTP.responseText;
    		
    		//utilizzo di responseXML
    		var tx = objHTTP.responseXML;
    		
    		/* utilizzo dati di ritorno */
    	}
    
    };

    In altre parti ho trovato:
    codice:
    //impostazione della funzione di callback
    objHTTP.onreadystatechange = function() 
    {
    	if (objHTTP.readyState == 4) 
    	{
    		if (objHTTP.status == 200 || objHTTP.status == 0)
    		{
    
    		//utilizzo di responseText
    		var t = objHTTP.responseText;
    		
    		//utilizzo di responseXML
    		var tx = objHTTP.responseXML;
    		
    		/* utilizzo dati di ritorno */
    		
    		
    		else {/* gestione errore */}
    	}
    
    };

    :master: da cui la domanda: quale sarebbe il codice più corretto?

    Pietro

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    nessuno dei due visto l'if che viene fatto sullo status:

    il primo dice di prendere la risposta se la pagina non dà status ok (!=200) la seconda dice di prendere la risposta se la pagina ha status ok oppure 0

    Io uso sempre questo
    codice:
    if (objHTTP.status == 200 || objHTTP.status == 304)
    304 è lo status che viene riportato quando la risorsa è presente in cache (opera lo usa spesso nelle richieste get)

    A parte l'if comunque non ci sono differenze tra i due codice che hai postato...

    Ciao
    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 di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Puoi darmi la conferma?
    codice:
    //impostazione della funzione di callback
    objHTTP.onreadystatechange = function() 
    {
    	if (objHTTP.readyState == 4) 
    	{
    		if (objHTTP.status == 200 || objHTTP.status == 304)
    		{
    
    		//utilizzo di responseText
    		var t = objHTTP.responseText;
    		
    		//utilizzo di responseXML
    		var tx = objHTTP.responseXML;
    		
    		/* utilizzo dati di ritorno */
    		
    		
    		else {/* gestione errore */}
    	}
    
    };
    Pietro

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    si ma dovresti scegliere un metodo unico di lettura dei dati... non ha molto senso che tu usi insieme i metodi responseText e responseXML

    manca una graffa di chiusura prima dell'ultimo else
    Vuoi aiutare la riforestazione responsabile?

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

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da fcaldera
    si ma dovresti scegliere un metodo unico di lettura dei dati... non ha molto senso che tu usi insieme i metodi responseText e responseXML

    manca una graffa di chiusura prima dell'ultimo else
    Hai ragione, certo: quelle due righe sono inutili e sono da intendersi come :

    /* qui utilizzo i dati di ritorno, o xml o testo */


    mentre, con la fretta, il primo esempio doveva essere naturalmente seguito da un return, che ho dimenticato:

    if (objHTTP.status != 200) {/* gestione errore */ return;}


    comunque, seguirò il tuo consiglio.

    Grazie
    Pietro

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Chiedo un po' di pazienza per la domanda, ma sto cercando su google e altro, e non trovo niente:

    dove posso documentarmi su:

    objHTTP.status == 304

    Grazie
    Pietro

  7. #7
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    non è facile trovare esempi in giro che contemplino 304 come status.

    Io stesso me ne sono accorto per caso mentre provavo un codice cross-browser su Opera, il quale riportava sempre 304 dalla seconda richiesta in poi nelle richieste GET.

    In pratica Opera si accorge che la risorsa che viene richiesta è già in cache e in qualche modo (ma non so come) nella richiesta forza il server a rispondere 304 (non saprei come spiegarlo altrimenti)

    comunque cerca "server status" su google per avere una lista completa degli status di risposta del server


    Ciao
    Vuoi aiutare la riforestazione responsabile?

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

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da fcaldera
    non è facile trovare esempi in giro che contemplino 304 come status.

    Io stesso me ne sono accorto per caso mentre provavo un codice cross-browser su Opera, il quale riportava sempre 304 dalla seconda richiesta in poi nelle richieste GET.

    In pratica Opera si accorge che la risorsa che viene richiesta è già in cache e in qualche modo (ma non so come) nella richiesta forza il server a rispondere 304 (non saprei come spiegarlo altrimenti)

    comunque cerca "server status" su google per avere una lista completa degli status di risposta del server


    Ciao
    volevo ben dire che non era facile
    Comunque, ho trovato 224.000.000 di risposte
    Comincio a leggere...


    ps. nel frattempo che trovo il link giusto, ho già corretto la mia libreria col tuo consiglio
    Pietro

  9. #9
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

    credo che più dettagliato di così non si possa...



    Keywords: status server 304 get ajax xmlhttprequest
    Vuoi aiutare la riforestazione responsabile?

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

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da fcaldera
    http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

    credo che più dettagliato di così non si possa...



    Keywords: status server 304 get ajax xmlhttprequest

    10.3.5 304 Not Modified
    If the client has performed a conditional GET request and access is allowed, but the document has not been modified, the server SHOULD respond with this status code. The 304 response MUST NOT contain a message-body, and thus is always terminated by the first empty line after the header fields.

    TROVATO :maLOL: Grazie della pazienza
    Pietro

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 © 2026 vBulletin Solutions, Inc. All rights reserved.