0

以下のコードは、「401 - Unauthorized」エラーを受け取ったときに、.fail または .always に行かずにエラーをスローしています。失敗をトリガーし、サーバーからの応答で返されるエラー [myErrorMessage] を取得する方法はありますか?

JavaScript

$(document).ready(function() {

    var jqXHR = $.ajax({
        url: "http://[myDomain]/[myPage]",
        dataType: "jsonp",
        jsonpCallback: "myFunction"
    })
        .done(function() { alert("success"); })
        .fail(function() { alert("error"); })
        .always(function() { alert("complete"); });

    function myFunction(data) {
        alert("callback");
    }

});

リクエスト結果

GET http://[myDomain]/[myPage]?callback=myJsFunction&_=1361463044315 HTTP/1.1
Host: [myDomain]
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17
Referer: http://[myTotallyDifferentDomain]/Default.aspx
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

回答結果

HTTP/1.1 401 Unauthorized
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 21 Feb 2013 16:10:42 GMT
Content-Length: 67

{"Message":"[myErrorMessage]"}

クロムの結果

GET http://[myDomain]/[myPage]?callback=myJsFunction&_=1361463044315 401 (Unauthorized) jquery.min.js:5
4

1 に答える 1

1

JSONPリクエストは、jQuery 1.9の時点でエラー時にフェイルハンドラーに送信されません。これは、文書化された動作です。

私の知る限り、それを回避する方法はありません。(もちろん、プロキシを使用する以外)

http://api.jquery.com/jQuery.ajax/

于 2013-02-21T16:42:09.020 に答える