web-dev-qa-db-ja.com

$ .ajaxユーティリティのJQueryエラーオプション

ドキュメントには、error:オプション関数が使用可能になることが示されています:XHRインスタンス、ステータスメッセージ文字列(この場合は常にエラー)、およびXHRインスタンスから返されるオプションの例外オブジェクト(Book:JQuery in Action)

以下を使用して($ .ajax呼び出しで)「parsererror」および「timeout」(timeout:オプションを追加したため)が発生したと判断できました

error: function(request, error){}

エラーオプションで評価する他のことは何ですか?オプションの例外オブジェクトを含めますか?

編集:回答の1つは、すべての戻りエラーを示します... XHRインスタンスと例外オブジェクトの(デバッグ用の)価値のあるものについての詳細を学ぶと役立ちます

これは完全な$ .ajax呼び出しです。

$.ajax({
 type: "post",
 url: "http://myServer/cgi-bin/broker" ,
 dataType: "text",
 data: {
 '_service' : 'myService',
 '_program' : 'myProgram',
 'start' : start,
 'end' : end
 },
 beforeSend: function() {
  $("#loading").removeClass("hide");
 },
 timeout: 5000,
 error: function(request,error) {
  $("#loading").addClass("hide");
  if (error == "timeout") {
   $("#error").append("The request timed out, please resubmit");
  }
  else {
   $("#error").append("ERROR: " + error);
  }
  },
  success: function(request) {
   $("#loading").addClass("hide");
   var t = eval( "(" + request + ")" ) ;
  } // End success
}); // End ajax method

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

34
Jay Corbett

JQueryのソースコードを見ると、successに加えて4つのステータスが返されます:

  • timeout-指定し​​たタイムアウトを超えたとき
  • エラー-404などのHTTPエラー
  • notmodified-要求されたリソースが最後の要求以降に変更されなかったとき
  • parsererror-xml/json応答が悪い場合
22
Zach

エラーよりもリクエストの方が便利だと思います。

error:function(xhr,err){
    alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);
    alert("responseText: "+xhr.responseText);
}

xhrはXmlHttpRequestです。
readyState値は、1:loading、2:loaded、3:interactive、4:completeです。
statusはHTTPステータス番号です。つまり、404:見つかりません、500:サーバーエラー、200:ok
responseTextはサーバーからの応答です。これは、WebサービスからのテキストまたはJSON、またはWebサーバーからのHTMLです。

43
Matt

これは別ですが、送信したコードにバグがあると思います。この線:

 if (error = "timeout") {

より多くの等号を含める必要があります。

 if (error == "timeout") {
4
davegurnell

エラー関数に渡される2番目の引数は、文字列「timeout」「parserror」「error」または「notmodified」のいずれかです。 3番目は例外オブジェクトです。このオブジェクトはデバッグに役立ちます。

1
Jataro

応答は正しいですか?解析エラーは、var t = eval( "(" + request + ")" ) ;行で評価されるデータに問題があることを意味します

0