web-dev-qa-db-fra.com

la comparaison de chaîne d'instruction jQuery 'If' ne fonctionne pas

J'ai beaucoup de difficulté à essayer de faire quelque chose de très simple. Voici le code:

        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 que cela va toujours dans la déclaration 'else' et cela avertit le 'succès', ce qui ne devrait pas être le cas s'il va au 'else'. Une idée de ce qui se passe ici?

EDIT: Voici le code complet AJAX dans 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'
}
11
williamg

Vous pouvez le réparer côté client en utilisant $.trim() comme ceci:

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

Sinon, une meilleure approche consisterait à supprimer la nouvelle ligne venant du côté serveur, probablement une nouvelle ligne erronée dans votre PHP quelque part, vérifiez avant ou après le bloc <? ?>; surgir.

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

if($update) {
  echo 'success';
  exit();
}
28
Nick Craver

La validation côté client fonctionne bien. 

$.trim() fine.

Merci Nick. Il m'a fallu longtemps pour comprendre pourquoi ça ne marche pas ...

0
syyu

Vous pouvez supprimer le point final?> De votre fichier, s'il s'agit de la dernière ligne du fichier. Je veux répondre aux commentaires sur le problème initial, mais je ne vois pas comment.

0
karlw