1

jquery ajax でエラーが発生したときに関数を終了したいと思います。例: $.ajax 以外の命令を持つ関数で $.ajax を呼び出している場合、$.ajax 呼び出しにエラーが発生した場合、return を呼び出して残りの命令を終わらせようとすると、それらの残りの命令が実行されます。

だから、私が望むのは、エラー $.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

関数が何らかのイベントで呼び出された場合、以下のステートメントを使用して中止できます。このステートメントは、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

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

例外をスローしてみてください

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

すべてが停止し、デバッグコンソールにも表示されます

于 2012-11-08T16:01:09.337 に答える