Visualizzazione dei risultati da 1 a 9 su 9

Discussione: problema switch()

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714

    problema switch()

    Salve a tutti,
    come da oggetto ho un problema con la funzione switch().

    Ho la seguente funzione:

    Codice PHP:

    function gestisci_risposta() {   
        if(
    http_req.readyState == 4) {   
            var 
    esito http_req.responseText
            
    alert(esito);
            switch (
    esito) {  
              default:   
                
    alert('Risposta del server non riconosciuta: ' esito);   
              break;
              case 
    1:   
                
    alert('username non presente nel sistema');   
              break;  
              case 
    2:   
                
    alert('password errata');   
              break; 
              case 
    3:   
                
    alert('username o password non inserite');   
              break;
              case 
    4:   
                
    alert('login effettuato correttamente');   
              break;  
            }   
        }

    La questione e' che, nonstante il valore di esito sia " 4 ", ed e' confermato dall'alert, lo switch va nel case default e mi stampa l'alert:

    Risposta del server non riconosciuta 4 e qui mi conferma la seconda volta che il valore di esito sia 4.

    Come mai?

    Qualcuno ha qualche idea?

    Lo script e' preso da questo tutorial

    http://www.phpnews.it/articoli/xml/l...-ajax-e-php/1/

    Un saluto,
    Antonio

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    fosse sicuramente un numero sarebbe corretto valutarlo come numero,
    qui sicuramente ricevi una stringa, per cui va valutata come una stringa
    codice:
    ...
              case '1':   
                alert('username non presente nel sistema');   
              break;  
              case '2':   
                alert('password errata');   
              break; 
    ...
    ciao

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    tra l' altro, lo script originario e' corretto
    http://www.phpnews.it/articoli/xml/l...-ajax-e-php/2/

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    prova cosi:
    codice:
    function gestisci_risposta() {   
        if(http_req.readyState == 4) {   
            var esito = parseInt(http_req.responseText);
            alert(esito);
            switch (esito) {  
               case 1:   
                alert('username non presente nel sistema');   
              break;  
              case 2:   
                alert('password errata');   
              break;
              case 3:   
                alert('username o password non inserite');   
              break;
              case 4:   
                alert('login effettuato correttamente');         
              break;  
              default:   
                alert('Risposta del server non riconosciuta: ' + esito);   
              break;   
        }
    } 
    }
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    cosi' su due piedi mi viene da pensare che sia un problema di tipo di dati

    hai provato a fare cosi'? Cioe' mettere il valore tra apici?

    E sei sicuro che responseText contenga solo un numero e non altri caratteri (nella fattispecie spazi)?

    codice:
    case "1":
    ...
    break;

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    No, ho provato tutto, anche con la funzione corretta dal tutorial ma ho scoperto l'errore.

    Ho messo:

    alert(esito+'ciao');

    Il risultato e' che mi stampa

    4
    ciao

    quindi mette un A CAPO dopo la stringa.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    Ho tolto lo SPAZIO con:

    esito = esito.replace("\n","");

    alert(esito+'ciao');
    il problema e' che ora mi stampa

    4 ciao

    ma con

    esito = esito.replace(" ","");

    non mi toglie lo SPAZIO.

  8. #8
    sarebbe interessante scoprire perche' c'e' uno spazio!

    ad ogni modo parseint dovrebbe risolvere, no? Come suggerito da cavicchiandrea

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    Si, con parsInt funziona, solo che ho dovuto cambiare lo switch e togliere gli apici dai case.

    Grazie.

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.