14

私のドキュメントには、次のスクリプトがあります。

$.ajax({ type:"POST",url:"ajax.php",data:data,
    success: function() { 
        //onsuccess
    },
    error: function() { 
        //onerror
    }
}); 

ajax.phpドキュメントで意図的にエラーをスローするにはどうすればよいですか? 400 HTTP ステータス コードなどをスローするだけで十分ですか? (もしそうなら、400は正しいものですか?)

私が尋ねている理由は、これを使用してフォームをサーバーに送信したいということです。フィールドが正しく入力されていない場合は、 のエラーパラメーターを介してユーザーに警告したいと考えています$.ajax。そもそもJavaScriptを使用してこれを実行できることはわかっていますが、この方法で実行できることを望んでいます(したがって、検証を2回書く必要はありません)。しかし、もちろん、このようにすることで、異なるフィールドを他のフィールドから分離することはできません。

使用目的に基づいて、どうにかして「カスタムエラー」をスローできますnameか?フィールドが正しく入力されていない場合は、フィールドの名前 (つまりname) を返します。次のようなことをするだけで十分ですか:

ajax.php で:

if (isFilledOutProperly($name) == false) {
    echo "name";
}
else {
    echo "success";
}

と:

success: function(data) { 
    if (data == 'name') {
        //error
    }
            else {
        //success
    }
},

ここで間違った方向に進んでいる可能性がありますが、これを行う方法について誰かがより良い提案を持っている場合は教えてください. ありがとう!

4

1 に答える 1

12

呼び出しのerror節は$.ajax()、あなたが言及している状況に実際には当てはまりません。errorたとえば、HTTP エラーのケースをカバーします。この場合、検証の失敗は実際にはエラーではありません。successサーバーから返された適切なデータを使用して、コールバックでそれらを示す方がよいでしょう。

ドキュメントを見ると:

error(XMLHttpRequest, textStatus, errorThrown)Function

リクエストが失敗した場合に呼び出される関数。この関数には 3 つの引数が渡されます。XMLHttpRequest オブジェクト、発生したエラーの種類を説明する文字列、およびオプションの例外オブジェクト (発生した場合) です。2 番目の引数 (null 以外) に指定できる値は、"timeout"、"error"、"notmodified"、および "parsererror" です。これはAjax イベントです。

注:エラー状態とは、解析エラー、タイムアウト、エラー (HTTP)、および未変更 (別の HTTP 応答) です。

技術的には、リクエストは成功しますが、検証は失敗します。これ自体はエラーではありません。

于 2010-02-06T11:50:19.307 に答える