3

jqueryでphpスクリプトに対してajax呼び出しを行っています。しかし、ajaxの成功/エラーハンドラーを起動するためにphpスクリプトは何を返す必要がありますか。だからここにajaxがあります:

$.ajax({
        data: $this.serialize(),
        type: "POST",
        url: "/Scripts/script.php", 
        success: function() { 
            alert("script was successful");
        },
        error: function() { 
            alert("script was unsuccessful");
        }
    });

したがって、phpスクリプトが返すことができるものがいくつかあります。

return 0, 1
return true, false
return "true", "false"
echo "true", "false

どちらがajaxの成功/エラー呼び出しを起動しますか?

4

2 に答える 2

11

サーバー側スクリプトがHTTPステータスコード200を送信する限り、常にsuccessコールバックを起動します。応答はまったく関係ありません。ステータスコードのみ。示したすべての例で、HTTPステータスコード200を送信しています=>成功コールバックは常にトリガーされます。

この関数を使用して、ステータスコードを200とは異なるものに強制することができhttp_response_codeます。

別の方法として、PHPスクリプトに情報を返してもらい、success関数内でスクリプトから返された値をテストして、サーバー側の処理が失敗したかどうかを確認することもできます。

$.ajax({
    data: $this.serialize(),
    type: "POST",
    url: "/Scripts/script.php", 
    success: function(result) { 
        if (result == 'true') {
            alert("script was successful");
        } else {
            alert("script was unsuccessful");
        }
    },
    error: function() { 
        alert("something very bad went wrong => there's a bug in the script");
    }
});

これで、スクリプトがエコーtrueまたはfalse

複雑なオブジェクトを送信する場合は、関数を使用してJSONとして送信し、HTTPContent json_encode-Typeヘッダーを関数を使用するように設定しapplication/jsonますheader

于 2012-10-21T08:34:14.433 に答える
0

成功は、エラーなしで完了したリクエストで実行さXMLHTTPRequestれ、結果として何を返すかは関係ありません。AJAXスクリプトが完了したときに実行される別のcompleteコールバックがありますが、XMLHTTPRequestエラーがあるかどうかは関係ありません。

于 2012-10-21T08:34:47.467 に答える