1

当 jquery ajax 发生错误时,我想退出我的函数。例如:如果我使用具有 $.ajax 之外的其他指令的函数调用 $.ajax,并且当我的 $.ajax 调用出现错误时,如果我尝试调用 return 以结束剩余的指令,那些剩余的指令被执行。

所以,我想要的是从 erro $.ajax 参数结束整个函数。

$.ajax({
 type: "POST",
 url: "home.aspx/ReturnInfoAge",
 data: "{'dD':'" + $('#dDate_wx').val() + "','dM':'" + $('#dMonth_wx').val() + "','dY':'" +   $('#dYear_wx').val() + "'}",
 contentType: "application/json; charset=utf-8",
  dataType: "json",
   success: function (msg) {
    if (msg.d === true) {
       prt.children('.tipCont').remove();
     } else {
       getTooltips(prt, 'criticalv', 'critical', msg.d);
        showMessagingTiming('warning', msg.d, 'Vérification de la date de naissance', null, 5000);
         return;
          }
    },
     error: function (errorMsg) {
       getTooltips(prt, 'criticalv', 'critical', "Veuillez bien saisir la date de naissance.");
      showMessagingTiming('warning', 'Veuillez vérifier: certains champs n\'ont pas les valeurs qu\'il faut.', 'Vérification des champs', null, 5000);
       return;
     }
 })
//other instructions 

我只是不希望,如果 $.ajax 错误参数中发生错误来执行其他剩余指令

4

4 回答 4

2

错误和成功回调是异步调用的,因此您的“其他指令”在调用其中一个回调之前开始工作。您应该将“其他说明”写入成功回调。

function containsAjax() {
    $.ajax({
        type: "POST",
        url: "home.aspx/ReturnInfoAge",
        data: "{'dD':'" + $('#dDate_wx').val() + "','dM':'" + $('#dMonth_wx').val() + "','dY':'" +   $('#dYear_wx').val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            if (msg.d === true) {
                prt.children('.tipCont').remove();
            } else {
                getTooltips(prt, 'criticalv', 'critical', msg.d);
                showMessagingTiming('warning', msg.d, 'Vérification de la date de naissance', null, 5000);
            }
            //other instructions should be here.
        },
        error: function (errorMsg) {
            getTooltips(prt, 'criticalv', 'critical', "Veuillez bien saisir la date de naissance.");
            showMessagingTiming('warning', 'Veuillez vérifier: certains champs n\'ont pas les valeurs qu\'il faut.', 'Vérification des champs', null, 5000);
        }
    });
}

如果您想从 containsAjax 函数返回某些内容,请使用回调:

function containsAjax(onsuccess, onfail) {
    $.ajax({
        type: "POST",
        url: "home.aspx/ReturnInfoAge",
        data: "{'dD':'" + $('#dDate_wx').val() + "','dM':'" + $('#dMonth_wx').val() + "','dY':'" +   $('#dYear_wx').val() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            if (msg.d === true) {
                prt.children('.tipCont').remove();
            } else {
                getTooltips(prt, 'criticalv', 'critical', msg.d);
                showMessagingTiming('warning', msg.d, 'Vérification de la date de naissance', null, 5000);
            }
            //other instructions should be here.
            onsuccess(msg);
        },
        error: function (errorMsg) {
            getTooltips(prt, 'criticalv', 'critical', "Veuillez bien saisir la date de naissance.");
            showMessagingTiming('warning', 'Veuillez vérifier: certains champs n\'ont pas les valeurs qu\'il faut.', 'Vérification des champs', null, 5000);
            onfail(errorMsg);
        }
    });
}

并这样称呼它:

containsAjax(function(msg) {
    // success callback, returns 'msg'
}, function(errormsg) {
    // error callback, returns 'errormsg'
});
于 2012-11-08T16:07:29.237 回答
1

jquery ajax 方法返回一个 XMLHttpRequest 对象。您可以使用此对象取消或中止请求。

var xhr = null;

xhr = $.ajax({
    url : 'path/to/file?some-parameter',
    success : function(responseText) {
        // some DOM manipulation
    }
});

$(document).click(function() { xhr.abort() });
于 2012-10-26T12:26:59.383 回答
1

如果您的函数在某个事件上被调用,那么您可以使用以下语句中止它。您可以在 Ajax 调用的错误块中编写此语句。

...
 error: function (errorMsg) {
   event.preventDefault();
   getTooltips(prt, 'criticalv', 'critical', "Veuillez bien saisir la date de naissance.");
   showMessagingTiming('warning', 'Veuillez vérifier: certains champs n\'ont pas les valeurs qu\'il faut.', 'Vérification des champs', null, 5000);
   return;
 }
...
于 2012-11-08T15:54:46.320 回答
1

尝试抛出异常

error: function(){
    //...
    throw new Exception('Ajax error description');
}

它会停止一切,你也会在调试控制台中看到它

于 2012-11-08T16:01:09.337 回答