2014-05-02 44 views
3

我的功能就是這樣我想使用異常處理在Javascript/jQuery函數

// 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); 
    } 

}); 

其中1獲得第一個錯誤,那麼我想阻止下一個AJAX的執行? 怎麼辦?

回答

1

普萊舍編寫代碼以這種方式

function fnMyFunction1(){ 
    try{ 
    if(success){ 
    // call fnMyFunction2 
    } 
    else{ 
    // Show Error message 
    } 
    } 
    catch(e){ 
    // Show Exception message 
    } 
} 
2

在第一個ajax調用的錯誤塊中,只需添加return false

error: function (x, y, z) { 
       alert("Error - 1"); 
       return false; 
      } 
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"); 
      } 
     }); 
}); 
1

使用下面的編碼風格

function f1(){ 
    try{ 
    if(success){ 
    // call f2 
    } 
    else{ 
    // Show Error message 
    } 
    } 
    catch(e){ 
    // Show Exception message 
    } 
}