在Javascript / Jquery函数中使用异常处理

3

我的函数是这样的

// JavaScript Document


$('#MyFormSubmit').submit(function(){

    try{
    /* Ajax - 1 */
    $.ajax({
           url: 'Any',
           type: 'GET',
           data: 'ID',
           contentType: "application/json;charset=utf-8",
           success: function (data) {
               alert("Success - 1");               
            },
            error: function (x, y, z) {
                alert("Error - 1");
            }
        });

    /* Ajax - 2 */
    $.ajax({
           url: 'Any',
           type: 'GET',
           data: 'ID',
           contentType: "application/json;charset=utf-8",
           success: function (data) {
               alert("Success - 2");               
            },
            error: function (x, y, z) {
                alert("Error - 2");
            }
        });

    /* Ajax - 3 */
    $.ajax({
           url: 'Any',
           type: 'GET',
           data: 'ID',
           contentType: "application/json;charset=utf-8",
           success: function (data) {
               alert("Success - 3");               
            },
            error: function (x, y, z) {
                alert("Error - 3");
            }
        });
    }
    catch(e){
        alert(e);   
    }

});

如何在发生第一个错误时,停止执行下一个ajax请求?

5个回答

2
在第一个ajax调用的错误块中,只需添加return false
error: function (x, y, z) {
                alert("Error - 1");
                return false;
            }

1
请以这种方式编写代码。
function fnMyFunction1(){
  try{
   if(success){
     // call fnMyFunction2
   }
   else{
     // Show Error message
   }
  }
  catch(e){
     // Show Exception message
  }
}

1
使用以下编码风格。
function f1(){
  try{
   if(success){
     // call f2
   }
   else{
     // Show Error message
   }
  }
  catch(e){
     // Show Exception message
  }
}

1
使用try catch来处理异常。
try语句允许您测试一段代码以查找错误。
catch语句允许您处理错误。
throw语句允许您创建自定义错误。
try {
   try_statements
   if(condition)    throw "Error";

}
[catch (exception_var_1 if condition_1) {
   catch_statements_1
}]
...
[catch (exception_var_2) {
   catch_statements_2
}]
[finally {
   finally_statements
}]

1

你需要嵌套你的Ajax调用,因为你的调用是异步的,每个调用都会立即继续进行下一个请求而不等待请求完成。因此:

$('#MyFormSubmit').submit(function(){

    try{
    /* Ajax - 1 */
    $.ajax({
           url: 'Any',
           type: 'GET',
           data: 'ID',
           contentType: "application/json;charset=utf-8",
           success: function (data) {
               alert("Success - 1");        
                /* Ajax - 2 */
                $.ajax({
                       url: 'Any',
                       type: 'GET',
                       data: 'ID',
                       contentType: "application/json;charset=utf-8",
                       success: function (data) {
                           alert("Success - 2");    
                            /* Ajax - 3 */
                            $.ajax({
                                   url: 'Any',
                                   type: 'GET',
                                   data: 'ID',
                                   contentType: "application/json;charset=utf-8",
                                   success: function (data) {
                                       alert("Success - 3");               
                                    },
                                    error: function (x, y, z) {
                                        alert("Error - 3");
                                    }
                                });
                            }
                            catch(e){
                                alert(e);   
                            }
                        },
                        error: function (x, y, z) {
                            alert("Error - 2");
                        }
                    });
            },
            error: function (x, y, z) {
                alert("Error - 1");
            }
        });
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接