2010-07-13 4 views
11

Sto attraversando un periodo molto difficile cercando di fare qualcosa di molto semplice. Ecco il codice:jQuery 'If' confronto stringa di istruzioni non funziona

 if(data == 'success') { 

      alert('foo'); 

     } else { 

      alert(data); 

     } 

L'ho semplificato, ma è tutto ciò che è necessario per capire cosa sta succedendo. la variabile 'data' è il risultato di una chiamata AJAX, se questo fa alcuna differenza. Il problema è che va sempre alla dichiarazione 'else' e avvisa 'successo', che non dovrebbe essere se va al 'else'. Qualche idea su cosa sta succedendo qui?

EDIT: Ecco il codice completo AJAX in jQuery:

$.post("/manage_sites.php", {before:before, edit:after}, function(data){ 

     if(data == success) { 

      alert('blah'); 

     } else { 
      alert(data); 
     } 
    }); 

E poi nella risposta PHP:?

...code.... 
$update = mysql_query("UPDATE users SET feeds = '$afterFeed' WHERE username = '$name'") or  die("Query Failed"); 

if($update) { 

    echo 'success'; //this is the 'string' that is being given to 'data' 
} 
+2

'avviso (tipo di dati);' Questo ti darà un'idea se stai confrontando le mele con le arance, e quindi entri sempre nel resto. –

+0

Mi ha dato "stringa". – williamg

+1

puoi incollare l'intera risposta ajax, vero json? – redsquare

risposta

28

È possibile risolvere il problema sul lato client utilizzando $.trim() come questo:

if($.trim(data) == 'success') { 

Oppure, un approccio migliore sarebbe quello di rimuovere la nuova linea proveniente dal lato server, probabilmente una errata nuova linea in il tuo PHP da qualche parte, controlla prima o dopo il blocco <? ?>, questo è il più delle volte dove spuntano.

Oppure, semplicemente uscita dopo l'output sul suo sito web, in questo modo:

if($update) { 
    echo 'success'; 
    exit(); 
} 
+0

Sto leggendo la proprietà CSS 'content' di un elemento e anche il taglio non aiuta il confronto a passare. –

0

È possibile rimuovere il trailing> nel file, se è il ultima riga nel file. Voglio rispondere ai commenti al problema originale, ma non vedo come.

+1

Hai bisogno di 50 rep per pubblicare un commento su una domanda che non hai chiesto. Continua a postare! http://stackoverflow.com/faq – jasongetsdown

0

client validazione lato lavorando bene.

$.trim() fine. 

Grazie Nick. Mi ci è voluto molto tempo per capire perché non funziona ...