如何使用jquery处理整个页面的单个Ajax错误

时间:2012-10-16 10:54:33

标签: jquery

在我的页面中,我使用8 ajax调用...

将数据发送到服务器端

我不想为每个ajax调用处理ajax错误......

单个ajax错误处理整个页面中的所有ajax错误....

是他们对整个页面的任何继承都是可能的。

 function SendConfirmationEmail(ShipmentID, ChannelOrderReference) {
var Url = '<%=Url.Action("SendShipmentEmail","Shipments") %>';
$.ajax({
    cache: false,
    type: "POST",
    data: 'strOrderShipmentId=' + ShipmentID + '&channelOrderReference=' + ChannelOrderReference,
    url: Url,
    datatype: "HTML",
    success: function (data) {
        if (data == "1") {
            SucessErrorMessageDisplay('DivStatus', 'lblStatus', 'imgStatus', 0, 'Email is successfully sent for Order#' + ChannelOrderReference + '');
        }
        if (data == "-2") {
            SucessErrorMessageDisplay('DivStatus', 'lblStatus', 'imgStatus', 0, 'Email Template is not Choosen for this Store');
        }
        if (data == "-1") {
            SucessErrorMessageDisplay('DivStatus', 'lblStatus', 'imgStatus', 0, 'Problem in Sending Email for Order#' + ChannelOrderReference + '');
        }
        if (data == "0") {
            SucessErrorMessageDisplay('DivStatus', 'lblStatus', 'imgStatus', 0, 'Connection Failed to Send Email for Order# ' + ChannelOrderReference + '');
        }
        if (data == "-3") {
            SucessErrorMessageDisplay('DivStatus', 'lblStatus', 'imgStatus', 0, 'ShipTo Email Address is Not Given for Order# ' + ChannelOrderReference + '');
        }
        // SucessErrorMessageDisplay('DivStatus', 'lblStatus', 'imgStatus', 0, 'Order# :' + ChannelOrderReference + ' is voided successfully');

    },
    error: function (xhr, ajaxOptions, thrownError) {
        if (xhr.status == 403) {
            window.location.href = '<%: Url.Action( "SessionExpire", "Home" ) %>';
        }
    }
});

}

2 个答案:

答案 0 :(得分:2)

$.ajaxError(function myErrorHandler(e, xhr, options, thrownError) {
  alert("Ajax error!");
});

应该成功。

答案 1 :(得分:0)

希望我理解你的问题......

当你调用JQuery的ajax时,你传递的是一个具有多个属性的对象。其中一个属性是error。 JQuery期望将一个函数分配给此属性。你提供了一个匿名函数,但是没有理由不能将它作为对函数的引用。

所以你可以在脚本的其他地方定义一个函数:

function handleError(xhr, ajaxOptions, thrownError) {
   if (xhr.status == 403) {
      window.location.href = '<%: Url.Action( "SessionExpire", "Home" ) %>';
   }
}

然后在你的ajax调用中,引用它:

$.ajax({
    cache: false,
    // etc...
    error: handleError
});