为什么ajax设置在这种情况下不起作用?

时间:2013-03-15 04:19:18

标签: jquery

从请求到服务器我返回401错误。

我想处理这个并正确地重定向用户。

起初我尝试使用ajaxSetup捕获错误并处理它,但这不会受到影响。

然后我将其改为使用ajaxError方法,这样就可以了。

为什么在使用ajaxSetup时没有遇到错误方法?

这有效:

$("body").ajaxError(
                function (e, request) {
                    if (request.status == 401) {
                        alert("Your session has expired. Please login again to continue.");
                        window.location = "/admin/account/logon";
                    }
                }
            );

但这不起作用:

$.ajaxSetup({
        cache: false,
        error: function (jqXHR, textStatus, errorThrow) {
            if (jqXHR.status == 401) {
                alert("Your session has expired. Please login again to continue.");
                window.location = "/admin/account/logon";
            }
        }
    });

使用Jquery Unobtrusive Ajax触发,链接如下所示:

<a title="Delete this comment" class="close " data-ajax="true" data-ajax-confirm="Are you sure you want to delete this comment?" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#Comments" href="/myurl">×</a>

1 个答案:

答案 0 :(得分:3)

From the documentation

Note: 
Global callback functions should be set with their respective global Ajax event handler methods—
.ajaxStart(),
 .ajaxStop(),
 .ajaxComplete(),
 .ajaxError(),
 .ajaxSuccess(),
 .ajaxSend()

—rather than within the options object for $.ajaxSetup().