2017-04-07 87 views
-2

如何從成功函數手動調用error:function?可能嗎 ?如何從成功函數手動調用Ajax「error:function()」函數?

success: function(data) { 
    response($.map(data, function(item) { 
     if (item != "some value") { 
     // Call error:function from here 
     } 
     return item; 
    })) 
    }, 
    error: function(xhr, status, error) { 
    var err = eval("(" + xhr.responseText + ")"); 
    alert(err.Message); 
    } 
+0

是的。創建一個函數'onSuccess()'將當前'success'的代碼移動到它並將其賦值爲'success:onSuccess,error:...'然後您可以在不使用ajax的情況下調用它。 – Tushar

+0

我想你已經誤解了Ajax中的錯誤回調的概念。如果您在問題中添加更多詳細信息,可能還有其他更好的選擇可以解決您的問題。 – Jai

+0

注意:不確定爲什麼你需要做'eval(「(」+ xhr.responseText +「)」)',但有99%的機會應該以其他方式完成而不需要eval。 – JJJ

回答

2

像這樣:

success: function(data) { 
    response($.map(data, function(item) { 
     if (item != "some value") { 
      onError(...) 
     } 
     return item; 
    })) 
}, 
error: onError 


var onError = function(xhr, status, error) { 
    var err = eval("(" + xhr.responseText + ")"); 
    alert(err.Message); 
} 

順便說一句,使用eval是不是一個好主意。

1

Ajax error當http請求失敗時調用函數。在ajax success上不能觸發error函數。請參閱API文檔here

如果你想做一個特定的任務,你打算在ajax error上做什麼,你可以把它包裝在一個函數中,並在ajax success中調用它。

2

成功是,如果請求成功

錯誤要調用的函數,如果請求失敗,因此,與在後臺你的問題沒有意義 被調用的函數。

但是,當呼叫成功或失敗時,您可能有共同的事情要做;我的建議是收集所有常見的事情在一個單獨的功能中做,並在成功和錯誤中調用這個常用功能。