我对 JavaScript 很陌生,所以问题可能是假的。 我在我的代码中做了很多 GET 和 POST 请求,所以我决定编写包装函数来调用 jQuery 的 ajax 函数
/**
* Makes Get request
* @param url URL
* @param successCallback function triggered when request is successfully proceeded
* @param failCallback function triggered is case of failed request
*/
function getRequest(url,successCallback,failCallback){
$.ajax({
url: url,
timeout: 3000,
dataType: "json",
success: function(data,textStatus,jqXHR){
successCallback(data,textStatus,jqXHR);
},
error: failCallback(jqXHR,textStatus,errorThrown)
});
}
我这样调用它:
url = "/api/info";
function onSuccess(data,textStatus,jqXHR){
$("#result").html("Hostname is "+data.hostname);
}
function onFail(jqXHR,textStatus,errorThrown){
$("#result").html("Shit happens");
}
//fire request
getRequest(url,onSuccess(),onFail());
回调已触发,但数据未定义。
最佳答案
最后我通过像这样重写函数来修复它:
function getRequest(url,successCallback,failCallback){
$.ajax({
url: url,
timeout: 3000,
dataType: "json",
success: function(data,textStatus,jqXHR){
successCallback(data,textStatus,jqXHR);
},
error: function(jqXHR,textStatus,errorThrown){
failCallback(jqXHR,textStatus,errorThrown);
}
});
}
用法是:
getRequest(url,onSuccess,onFail);
正如@Fabricator 指出的那样
关于javascript - JQuery 的 ajax 函数的包装器。回调已触发,但没有参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24978118/