Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    121

    xmlHttpRequest Response: confronto stringhe

    Ciao a tutti!
    Ho questo codice:

    codice:
    function stateChanged() {
    	if(xmlHttp.readyState == 4) {
    		//Stato OK
    		if (xmlHttp.status == 200) {
    			var resp = xmlHttp.responseText;
    			document.getElementById('contactArea').innerHTML = resp;
    			alert(resp);
    		}
    		waiting = false;
    		
    	}
    
    }
    Dunque: cosa succede... riceve "resp" come xmlHttp.responseText, e lo riceve correttamente, in quanto in 'contactArea' mi scrive correttamente il risultato dell'elaborazione. Però, se faccio alert(resp) mi mostra il listato della pagina in un popup...
    Se faccio
    codice:
    alert(resp.innerHTML); //oppure
    alert(resp.html);
    nel popup ottengo "undefined".
    Siccome io avrei bisogno di fare un confronto tra resp e una stringa, del tipo
    codice:
    if (resp=="Hai un errore") {
    
    ....
    
    }
    ovviamente, con questo problema è impossibile, perché essendo "undefined" oppure il listato della pagina, nell'if non entra mai.
    Come potrei risolvere?

    Grazie!

  2. #2
    Innanzi tutto, cosa intendi con "se faccio alert(resp) mi mostra il listato della pagina in un popup..."?

    La risposta che ottieni via Ajax è una stringa o un pezzetto di html che, se messo nell'innerHTML di contactArea viene correttamente visualizzato?

    L'unica cosa che potresti fare è testare la presenza di sottostringhe nel pezzo di html ricevuto con Ajax, ad esempio:
    codice:
        if(/Hai un errore/i.test(resp)) {
            alert("dentro resp c'è la stringa 'Hai un errore', ignorando le maiuscole");
        }
        else {
            alert("dentro resp NON c'è la stringa 'Hai un errore', ignorando le maiuscole");
        }
    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    121
    Hai fatto centro: nel div contactarea il messaggio viene correttamente visualizzato!!! Come può essere?

  4. #4
    Originariamente inviato da atsap
    Hai fatto centro: nel div contactarea il messaggio viene correttamente visualizzato!!! Come può essere?
    può essere, perchè il div fa parte del documento html, ed il browser lo interpreta!

    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    121
    E quindi? Come potrei risolvere? O meglio, come posso estrarre la stringa dal div? InnerHTML non funziona, html neanche, .value neanche...

  6. #6
    Tu scrivi:
    codice:
    function stateChanged() {
    	if(xmlHttp.readyState == 4) {
    		//Stato OK
    		if (xmlHttp.status == 200) {
    			var resp = xmlHttp.responseText;
    			document.getElementById('contactArea').innerHTML = resp;
    			alert(resp);
    		}
    		waiting = false;
    		
    	}
    
    }
    Spiegazione:
    var resp = xmlHttp.responseText;
    Tu crei una variabile locale nella quali salvi il risultato della chiamata Ajax
    (a questo punto puoi fare tutti i controlli che vuoi sul contenuto della variabile stessa, e, in particolare, puoi anche testare se il contenuto stesso contiene una stringa che ti aspetti,
    come ti avevo già suggerito!
    codice:
        if(/Hai un errore/i.test(resp)) {
            alert("dentro resp c'è la stringa 'Hai un errore', ignorando le maiuscole");
        }
        else {
            alert("dentro resp NON c'è la stringa 'Hai un errore', ignorando le maiuscole");
        }
    poi:
    document.getElementById('contactArea').innerHTML = resp;
    aggiorni il contenuto del div 'contactArea' mettendo, al posto di quello che eventualmente contiene, il contenuto della variabile resp.

    finito.
    Ora, uscendo dalla funzione, la variabile resp non esiste piu'.

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    121
    Grazie, sei stato chiarissimo e ho imparato una cosa importante, cioè che il contenuto di una risposta dell'oggetto xmlhttprequest response è un messaggio incapsulato in html puro, e come tale va trattato.
    Grazie ancora!

  8. #8
    Originariamente inviato da atsap
    Grazie, sei stato chiarissimo e ho imparato una cosa importante, cioè che il contenuto di una risposta dell'oggetto xmlhttprequest response è un messaggio incapsulato in html puro, e come tale va trattato.
    Grazie ancora!
    non è sempre vero!
    Piuttosto il contenuto è quello che il programmatore della parte server ha deciso che fosse!

    ciao!
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

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