0

応答と成功を比較するときに、if/elseステートメントが正しく表示されない理由がわかりません。最初のアラートは「成功」をアラートしますが、それを比較しようとすると...それが真実であるとはわかりません。私は何が間違っているのですか?前もって感謝します。

    $("#suggestion_button_box").click(function(){     
    var suggestion = $("#suggest_input_id").serialize();

    if(suggestion != "") {
        $.post('suggest_tag.php',suggestion, function(response) {

            alert(response);    

            if(response == "success") {
                alert('yes');       
            }else {
                alert('no');
            }

    });

    }
});

PHP部分

echo "success";
4

3 に答える 3

1

上で述べたように、jQueryは結果の文字列を単なるプレーンテキスト以外のものとして解釈している可能性があります。デフォルトでは、jQuery.post()は返されるデータのタイプをインテリジェントに推測しようとします。APIには4つのパラメーターオプションがあります。4番目のパラメーター(dataType)を'text'に設定して、動作を開始するかどうかを確認してください。

編集

上記のコメントに気づきましたが、これにより状況が変わるため、「データ」は潜在的にXML/HTML要素になります。

返されたオブジェクトがXML要素であるかどうかを確認する必要があります。その場合は、DOMトラバーサルを実行し、場合によっては$(response).text()を実行して取得できます。

編集2 応答<code>"success"</ code>を返していますか、それとも<?php echo "success";?>であることを示しようとしていましたか?

于 2013-01-27T11:21:19.007 に答える
0

私の経験から、PHPスクリプトの1つにおそらく白い文字があります(つまり、

これで問題が解決しない場合は、いつでも次のように JS trim() 関数を使用できます。

if(response.trim() == "success") {

または、よりクロスブラウザである jQuery.trim() でさえ。

于 2014-01-30T09:21:23.263 に答える
0

これを試して:

$("#suggestion_button_box").click(function(){
    var suggestion = $("#suggest_input_id").val();
    if(suggestion != "")
    {
        $.post('suggest_tag.php', { suggestion : suggestion },
        function(response) {
            alert(response);    
            if(response == "success") {
                alert('yes');       
            }else {
                alert('no');
            }
        });
    }
});
于 2014-01-30T09:36:54.693 に答える