我有一个函数,它反过来调用ajax。我在我的所有页面中都使用过它。
function getFunc(fullURL, successCallback, errorCallback) {
$.ajax({
type : 'GET',
url : fullURL,
async : false,
dataType : 'json',
success : successCallback,
error : errorcallback
});
}
并按以下方式调用此函数 -
getFunc(someurl,
function(data){
//display data
},
function(xhr, textStatus, errorThrown){
//display errors
}
);
此代码工作正常。现在我必须添加一些默认的错误处理代码,该代码适用于调用getFunc(..)
的所有网页,但我不想进入每个网页并执行此操作。我怎么能在getFunc(..)
中做到这一点?
,我需要一种方法来做到这一点 -
function getFunc(fullURL, successCallback, errorCallback) {
$.ajax({
type : 'GET',
url : fullURL,
async : false,
dataType : 'json',
success : successCallback,
error : do some default error handling and then call errorCallback
});
}
答案 0 :(得分:3)
为什么不将匿名函数传递给error
而不是errorcallback
。让函数执行操作,然后在完成后调用errorcallback
。
function getFunc(fullURL, successCallback, errorCallback) {
$.ajax({
type: 'GET',
url: fullURL,
async: false,
dataType: 'json',
success: successCallback,
error: function(xhr, textStatus, errorThrown){
// Do whatever
// ...
// Then call errorCallback
errorCallback.apply(this, arguments);
}
});
}
答案 1 :(得分:0)
我觉得你的意思是, 如果错误未被调用者处理 - 即他们没有指定函数..
将你的getFunc更改为:
function getFunc(fullURL, successCallback, errorCallback) {
$.ajax({
type : 'GET',
url : fullURL,
async : false,
dataType : 'json',
success : successCallback,
error : function(error) {
if(errorcallback)
errorcallback(error.xhr...etc...);
else
catchUnhandled(error);
}
});
}
function catchUnhandled (error)
{ //place catch all code here }