2016-03-30 19 views
7

jqueryの.post()メソッドを使用してHTTPリクエストを送信するためのコードブロックがあります。どのAjaxリクエストが失敗したかを知るには?

$.post("/product/update", formPostData) 
.done(function (data) { 
    // success 
    alert(data.product_id + ' was updated!'); 
}) 
.fail(function (data) { 
    // fail, but which request? 
}); 

サーバから返されたJSONは私が必要'product_id'を持っているので、我々が扱っているの要求を知ることは容易で成功しています。

しかし、サーバが応答しないというエラー、たとえば接続性の問題が原因で失敗した場合、どのリクエストが失敗したかをどのように知ることができますか?

dataオブジェクトにはサーバーレスポンスしか含まれていないため、手がかりがありません。

.fail()ハンドラに値を渡して、どのリクエストが失敗したかを判断するにはどうすればよいですか?

+0

これは 'formPostData'の値を変えてこれを複数回呼び出すことで、どの呼び出しが失敗したのか分かりませんか? – LinuxDisciple

+2

「リクエストが失敗しました」とはどういう意味ですか? 1つのリクエストに対してのみコードを表示しています。あなたが '.fail()'関数を実行した場合、 'fail'が接続された' post'が失敗したことを知っています。 –

+1

クロージャを使用してください。 – Bergi

答えて

8

thisオブジェクトはここでは便利です。あなたはthis.dataを解析し、そこから自分の投稿情報を得ることができる必要があります:

.fail(function (jqXHR, textStatus, errorThrown) { 
    console.log(this.data); 
}); 
+2

'this.url'はリクエストのURLを含みます。 –

+2

https://jsfiddle.net/c88t233u/1/ < - example fiddle –

+2

@JoeEnosのformPostDataは投稿されたデータです。それは '失敗'でアクセス可能になるでしょう。 –

1

別の代替XHRオブジェクト自体に書き込み、その後、それがfail方法であなたのためにあります、そしてあなたを必要としないことになります閉鎖を使用する:

+0

これは非常に役に立ちます。どうもありがとうございました。 –

関連する問題