我正在使用以下样式的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 :(得分: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))