2010-07-13 4 views
11

J'ai du mal à faire quelque chose de très simple. Voici le code:jQuery 'If' comparaison de chaînes de déclaration ne fonctionne pas

 if(data == 'success') { 

      alert('foo'); 

     } else { 

      alert(data); 

     } 

Je l'ai simplifié, mais c'est tout ce qui est nécessaire pour comprendre ce qui se passe. la variable 'data' est le résultat d'un appel AJAX, si cela fait une différence. Le problème est qu'il va toujours à l'instruction 'else' et qu'il alerte 'success', ce qui ne devrait pas être le cas si l'on passe à 'else'. Une idée de ce qui se passe ici?

EDIT: Voici le code complet AJAX jQuery:

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

     if(data == success) { 

      alert('blah'); 

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

Et puis dans la réponse 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

'alert (typeof data);' Cela vous donnera une idée si vous comparez des pommes à des oranges, et donc toujours dans l'autre. –

+0

Il m'a donné «chaîne». – williamg

+1

pouvez-vous coller la réponse complète ajax, est-ce json? – redsquare

Répondre

28

Vous pouvez le fixer sur le côté client à l'aide $.trim() comme ceci:

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

Ou, une meilleure approche consisterait à supprimer la nouvelle ligne venant du côté serveur, probablement une nouvelle ligne erronée votre PHP quelque part, vérifiez avant ou après le bloc <? ?>, c'est le plus souvent où ils surgissent.

Ou, sortie juste après la sortie de votre contenu, comme ceci:

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

Je suis en train de lire la propriété CSS 'content' d'un élément et même le découpage n'aide pas la comparaison à passer. –

0

Vous pouvez supprimer la fuite> dans votre fichier, si elle est dernière ligne dans le fichier. Je veux répondre aux commentaires sur le problème d'origine, mais je ne vois pas comment.

+1

Vous avez besoin de 50 rep pour poster un commentaire sur une question que vous n'avez pas posée. Continuez à poster! http://stackoverflow.com/faq – jasongetsdown

0

fin de travail de validation côté client.

$.trim() fine. 

Merci Nick. Il m'a fallu longtemps pour comprendre pourquoi il ne fonctionne pas ...