WP.SEの助けを借りて、フォームからWP_RESTにデータを送信する方法を学びましたが、現在はカスタムエラーを返すことに問題があります。 WP_REST_Response
に正常に情報を渡すことができ、WP_REST_Response
にチェックを追加してエラーメッセージをAJAXエラー関数に返すようにしたいのですが、問題があります。
たとえば、私のローカルボックスでは、IPは::1
で、PHPで関数を作成したとします。
function ipAddress() {
if (isset($_SERVER['REMOTE_ADDR'])) :
$ip_address = clean($_SERVER['REMOTE_ADDR']);
else :
$ip_address = "undefined";
endif;
return $ip_address;
}
私が遭遇した小切手を返却する方法を調べた後:
だから私は私のWP_REST_Response
に追加しました:
function vader(\WP_REST_Request $request) {
if (ipAddress() == "::1") :
return json_encode(array(
'error' => 'you are localhost'
));
endif;
}
私のvader.jsでは、
error: function(data) {
throw data.error;
},
しかし、私はコンソールにエラーがなく、{"error":"you are localhost"}
と表示していますが、その値をエラー関数に渡したいだけです。
jQuery.ajax()のドキュメントを見る 私はstatusCode
を見つけました。
if (ek_ip_address() == "::1") :
return new WP_Error('foo', 'bar', array('status' => 404));
endif;
そして:
statusCode: {
404: function() {
$('#testForm').append("thrown 404s");
}
}
表示するerror
を取得する方法はありますか、それとも私は誤解していますかAJAX error
何が間違っているのですか。また、error
関数に渡すためにWP_REST_REQUEST
からJSON値が返されるようにするにはどうすればよいですか。
Ajax呼び出しはどこにでも送信できます。これは、PHPを実行しているサーバー、C#を使用してシミュレートされた仮想ローカルルート、またはその他のものにすることができます。それで、Ajaxはそれが理解できないので、応答が何であるかを気にしません。
サーバーから any dataを送り返しているとき、ステータスが200(またはエラー以外のもの)である限り、Ajaxスクリプトはこれを successful requestと見なします。その後、あなたの反応に基づいて状況に対処するのはあなた次第です。
私は英語の初心者です。 "success" の代わりに "error" Wordを使用し、それをレスポンスとして返します。
$data['status'] = 'error';
$data['message'] = 'Nice! Request has been done.';
return $data;
サーバーはタスクを正常に実行しましたが、誤った状況を送信しました。 Ajaxはどのようにそれを知っていますか?
そのため、Ajax呼び出しのエラーセクションは、要求の作成に問題があるときで、終了後ではなく終了後です。応答が送信された後、Ajaxはその仕事をしました、それは成功した要求と見なされます。
Jackが正しく指摘しているように、リクエストが成功したので、あなたはerror
コールバックで終わることは決してないでしょう。あなたのサーバがjQuery.ajax()
のsuccess
コールバックの中で返したものは何でも処理する必要があるでしょう:
success: (data) => {
if('error' in data) {
// server returned `error` property in payload - something is wrong!
}
}
ES6を使用していない場合
success:function(data) {
if(data && typeof data.error !== 'undefined') {
// show error message to user
}
}