2

jQueryでajaxリクエストを行う場合、サーバー側でエラーと戻り値をどのように処理する必要があるのでしょうか。

ajaxリクエストからデータベース挿入を行っていますが、データベース挿入の主キーIDをjQueryに返したいと思います。しかし、何も挿入されていない場合、または何らかの検証が失敗した場合は、エラーを返したいと思います。これは私が通常それをする方法です:

これが私のajaxリクエストです:

$.ajax({
    type: 'POST',
    url: "test.php",
    data: {stuff: stuff, stuff2: stuff2},
    success: function(response){
        switch( parseInt(response) ) {
            // Display different messages depending on return value
        }
    },
    error: function() {

    }
});

サーバ側:

if (some validation) { echo 1; exit; }
if (other validation) { echo 2; exit; }
if (everything went okay) { echo database id; exit; }

これが悪いコーディングであることを理解するのに天才である必要はありません。このシナリオのベストプラクティスは何ですか?JSON文字列を返す必要がありますか?

ご協力いただきありがとうございます!

4

2 に答える 2

0

JSONはうまく機能します。「結果」キーまたは「エラー」キーのいずれかを持つJSONオブジェクトを用意します。

{result: [value]} or {error: [message]}

jQueryコールバックで、応答オブジェクトのキーを確認します

if("result" in response} {
    // success
} else {
    // error
    alert( (response.error || "ERROR") );
}

編集もちろん、必要なだけ複雑にすることができます。「タイプ」、「値」、「メッセージ」は、いくつかの一般的なJSONキーです。

{
    type: [SUCCESS|WARNING|ERROR]
    value: [expected return value|array of warnings|array of errors]
    message: [some custom message to display to the user]
}
于 2013-02-11T20:11:14.340 に答える
0

コールバックでエラーを処理するsuccessことは、他の人があなたのコードを維持するのに苦労するかもしれないことを十分に驚くべきことです。RESTの原則に従っている場合は、サーバーからの応答で4xxステータスコードを返す必要があります。たとえば400 Bad Request、ジェネリックエラーの409 Conflict場合は戻り、何らかのリソースの競合がある場合は戻ります。次に、にerror渡された関数コールバックオプションでエラー応答を処理します。ajax.

HTTPステータスコードだけの詳細が必要な場合は、問題をより詳細に説明するJSONオブジェクト(またはプレーンテキスト文字列)を返すことできます。私のRESTAPIでは、通常、応答本文にエラーのプレーンテキストの説明を返し、応答のContent-Typeをに設定し"text/plain"ます。

于 2013-02-11T20:24:04.610 に答える