2015-11-05 28 views
0

我使用AJAX以下樣式要求:使用函數來處理AJAX錯誤,我如何傳遞額外的參數?

$.ajax({ 
    dataType: "json", 
    type: "GET", 
    url: url 
}).done(function(result, textStatus, jqXHR) { 
    if(result.success == 1) { 
     try { 
      if(!result.value_that_might_be_null) { 
       throw new Error("Value is null"); 
      } 
     } catch(err) { 
      ajaxError(jqXHR, err.message); 
     } 

    } else { 
     throw new Error("Unsuccessful"); 
    } 
}).fail(ajaxError); 

function ajaxError(jqXHR, textStatus, errorThrown) { 
    console.log('jqXHR: ' + jqXHR); 
    console.log('status: ' + textStatus); 
    console.log('error: ' + errorThrown); 
} 

這讓我有很好的控制了我的AJAX調用和可測試不存在一定的值,被設置爲錯誤的東西等

但是,我有幾個不同的AJAX調用,每個調用都在.done()回調中做了很多不同的事情,這意味着它們需要分離,而不是重新考慮到類中。

但是我的問題是,當通過try/catch語句調用它時,如何向ajaxError()添加額外的參數?

可我只是這樣做:

function ajaxError(jqXHR, status, error, additionalParameter = null) { 
    //blah blah blah 
} 

ajaxError(jqXHR, errorMessage, errorThrown, myAdditionalParameter); 
+0

[從失敗的jqXHR請求中獲取更多信息]的可能重複(http://stackoverflow.com/questions/26518699/get- jquery-jqxhr-request) – pistou

回答

0

您可以創建一個接受成功和錯誤回調像函數如下:

function sendRequest(url, success, error) { 
    $.ajax({ 
    dataType: "json", 
    type: "GET", 
    url: url, 
    success: function(result, textStatus, jqXHR) { 
     // do something if you want to 
     if (success) 
     success(); 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     // do something if you want to 
     if (error) 
     error(); 
    } 
    }); 
} 

function ajaxError(jqXHR, textStatus, errorThrown) { 
    console.log('jqXHR: ' + jqXHR); 
    console.log('status: ' + textStatus); 
    console.log('error: ' + errorThrown); 
} 

,你可以調用像sendRequest('/url',null,ajaxError)sendRequest('/url',null,ajaxError.bind(null,someParameter))

+0

「ajaxError.bind(null,someParameter)」在這裏是關鍵嗎? –

+0

@MrPablo是看看[綁定](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind)方法希望你已經做到了 –

+0

我實際上最終使用beforeSend並添加了一個jqXHR對象的自定義屬性,所以我可以發現哪個AJAX調用被觸發 –

相關問題