0

私のページでは、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" ) %>';
        }
    }
});

}

4

2 に答える 2

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

トリックをする必要があります。

于 2012-10-16T12:07:07.080 に答える
0

うまくいけば、私はあなたの質問を理解しています...

JQueryを呼び出すときはajax、いくつかのプロパティを持つオブジェクトを渡します。これらのプロパティの1つはです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
});
于 2012-10-16T11:01:06.677 に答える