web-dev-qa-db-ja.com

jQuery'If 'ステートメントの文字列比較が機能しない

私は非常に単純なことをしようとして非常に苦労しています。コードは次のとおりです。

        if(data == 'success') {

            alert('foo');

        } else {

            alert(data);

        }

簡略化しましたが、何が起こっているのかを理解するために必要なのはそれだけです。変数「data」はAJAX呼び出しの結果であり、違いが生じた場合。問題は、常に「else」ステートメントに移動し、「success」を警告することです。 'else'に行く場合は、すべきではありません。ここで何が起こっているのでしょうか。

編集:これがjQueryの完全なAJAXコードです:

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

        if(data == success) {

            alert('blah');

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

そして、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

$.trim() を使用して、クライアント側で次のように修正できます。

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

または、より良いアプローチは、サーバー側からの改行を削除することです。おそらく、PHPのどこかにある誤った改行、<? ?>ブロックの前後を確認してください。 、これはほとんどの場合、それらが発生する場所です。

または、次のように、コンテンツを出力した後に終了します。

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

クライアント側の検証は正常に機能しています。

$.trim() fine.

ニックありがとう。なぜ機能しないのか理解するのに時間がかかりました...

0
syyu

ファイルの最後の行である場合は、ファイルの末尾の?>を削除できます。元の問題へのコメントに返信したいのですが、方法がわかりません。

0
karlw