34

ドキュメントは、エラー: オプション関数が利用可能になることを示しています: XHR インスタンス、ステータス メッセージ文字列 (この場合は常にエラー)、および XHR インスタンスから返されるオプションの例外オブジェクト (書籍: 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

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

4

5 に答える 5

43

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

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 である可能性があります。

于 2009-12-24T03:26:33.790 に答える
22

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

  • timeout - 指定したタイムアウトを超えたとき
  • エラー- 404 などの http エラー
  • notmodified - 最後のリクエスト以降、リクエストされたリソースが変更されていない場合
  • parsererror - xml/json の応答が悪い場合
于 2008-09-18T19:53:23.567 に答える
4

余談ですが、あなたが提出したコードにはバグがあると思います。この線:

 if (error = "timeout") {

より多くの等号が含まれている必要があります。

 if (error == "timeout") {
于 2009-11-05T17:28:55.937 に答える
1

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

于 2008-09-18T19:53:31.977 に答える
0

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

于 2008-09-18T19:19:26.270 に答える