1

jQuery ajaxリクエストでエラーコールバックをテストしていますが、質問があります。以下は私のajaxリクエストです

$.ajax({
    type:'get',
    url:'non-existant-file.php',
    data: { newFile : $('#name').val() },
    beforeSend: function() {
        // make nice image to show the request is running
    },
    success: function() {
        // show results of successfull request
    },
    error: function(jq,status,message) {
        alert('A jQuery error has occurred. Status: ' + status + ' - Message: ' + message);
    }
});

スローされたエラーをテストすることのみを目的として、ファイルは存在しません。ステータスとして404が返され、メッセージとして「ファイルが見つかりません」が返されると思います。少なくとも、私がドキュメントを読んだとき、それは私がそれを理解する方法です:

2番目の引数(null以外)に指定できる値は、「timeout」、「error」、「abort」、および「parsererror」です。HTTPエラーが発生すると、errorThrownは、「NotFound」や「InternalServerError」などのHTTPステータスのテキスト部分を受け取ります。jQuery 1.5以降、エラー設定は関数の配列を受け入れることができます。各関数は順番に呼び出されます。

しかし、私が受け取るアラートは、私が期待したものとはまったく異なります。

A jQuery error has occurred. Status: error - Message: undefined

私はドキュメントを間違って理解していますか、それとも正しく行っていませんか?

4

3 に答える 3

2

jQuery AJAXでのエラー処理には、以下を使用します。

error       : function( xhr ) {
    var readyState = {
        1: "Loading",
        2: "Loaded",
        3: "Interactive",
        4: "Complete"
    };
    if(xhr.readyState !== 0 && xhr.status !== 0 && xhr.responseText !== undefined) {
        alert("readyState: " + readyState[xhr.readyState] + "\n status: " + xhr.status + "\n\n responseText: " + xhr.responseText);
    }
}

たぶん、これはあなたにそれを正しく動作させる方法についてのいくつかのヒントを与えることができます。

于 2012-08-22T13:09:57.130 に答える
1

これは、ルーティングサーバーが存在しないルートへのアクセスにどのように応答するかに関係していると思います。たとえば、JSFiddleは、もう少し役立つメッセージを返します。http: //jsfiddle.net/dxSma/

于 2012-08-22T13:10:03.760 に答える
0

「グローバルAjaxイベントハンドラー」を操作することもできます

.ajaxError()ここに、このリンクで見つけることができる例と詳細を示します。

http://api.jquery.com/ajaxError/

Ajaxリクエストが失敗したときにメッセージを表示します。

jQuery("#msg").ajaxError(function(event, request, settings){
  jQuery(this).append("<li>Error requesting page " + settings.url + "</li>");
});

または、古い方法でそのように作業することもできます:)

jQuery.ajax({
 ...,
complete: function(e, XHR, options) {
  if (XHR.status == 200) { // success
  } elseif (XHR.status == 500) { // Internal Server Error
  } elseif (XHR.status == 404) { // File Not found
 }
});
于 2012-08-22T13:15:15.050 に答える