2012-07-27 17 views
5

Ho un problema con il mio jquery ajax. Ho questo codice:Jquery dati ajax convertiti in stringa

$.ajax({ 
    url: '/users/validatepassword/'+current, 
    success: function(data){ 
     status = data; 
    }, 
    async: false 
}); 

if(status == "Password correct") 
{ 
    //do something 
} 

Fondamentalmente, voglio catturare i "dati" che sono stati restituiti in "successo". Ma non posso fare in modo che la dichiarazione if funzioni. Penso che i "dati" non fossero una stringa, quindi non posso fare un confronto.

+1

hai controllato i dati di ritorno, prova alert (dati); first –

+0

@nbrooks Ha 'async: false'. Ma comebal, probabilmente non dovresti codificare in quel modo. – Ariel

+0

@Ariel Wow, completamente perso quel lol – nbrooks

risposta

6

Definire stato fuori chiamata AJAX. quindi accedici ovunque.

var status = ''; 
$.ajax({ 
    url: '/users/validatepassword/'+current, 
    async: false, 
    dataType: "json", 
    success: function(data){ 
     status = data; 
    }, 

}); 

if(status == "Password correct") 
{ 
    //do something 
} 

At utenti/validatePassword uso json_encode()

echo json_encode("Password correct"); 
+2

Grazie. Hai effettivamente risolto il mio problema. Ho fatto alcune piccole modifiche e ha funzionato. >: D < – comebal

+0

@comebal: Sono contento di essere stato in grado di aiutarti. – mrsrinivas

+1

Suggerimento: usa 'dataType:" text "' o 'dataType:" xml "' per TXT o per XML. –

3

Prova condizione di controllo stato all'interno del codice Ajax.

$.ajax({ 
    url: '/users/validatepassword/'+current, 
    success: function(data){ 
     status = data; 
     if(status == "Password correct") 
     { 
     //do something 
     } 
    }, 
    async: false 
}); 

se la condizione è esterna ajax, verrà eseguita prima del ritorno ajax.

+0

grazie per le informazioni! – comebal

2

Si può provare in questo modo,

var response = $.ajax({ 
      url: '/users/validatepassword/'+current, 
      async: false 
     }).responseText; 

     if(response == "Password correct") 
     { 
      //do something 
     } 
+0

Ho fatto questo ma non funziona anche. – comebal

1

Vedete si dovrebbe elaborare il messaggio all'interno della funzione successo non dall'esterno.

var status = ''; 
$.ajax({ 
    url: '/users/validatepassword/'+current, 
    async: false, 
    success: function(data){ 
     status = data; 
     if(status == "Password correct") 
     { 
      //do something 
     } 
    } 
}); 
+0

Ciao, grazie per le informazioni – comebal

1

@Comebal: amici questo è quello che u bisogno di fare:

rimuovere In primo luogo l'async: false

$.ajax({ 
    url: '/users/validatepassword/'+current, 
    success: function(data){ 
     //alert(data); 
     if(data == "Password correct") 
     { 
        //do something 
     } 
    } 
}); 

Poi, la parte principale è rendere i dati sicuri da pagina Ajax " Password corretta "oppure non puoi" fare qualcosa "... :)