我想做的是有一个默认的成功功能,所有请求都会通过,然后是一个特定的功能,包含个别来电的内容。
像
这样的东西function handleResponse(data, func){
if(data.error){
display error information
}else{
func(data)
}
}
$.ajax({
success: handleResponse(data, function(){
Individual request callback function
})
});
不太确定这是否可以单独使用,但我写这篇文章是为了让你能够理解我的目标。我想问的是,如果有一种方法可以在handleResponse
中传递这个$.ajaxSetup
函数,那么我就可以像通常只使用一个匿名函数一样处理ajax响应并且{{} 1}}自动调用?
谢谢!
答案 0 :(得分:3)
当jQuery调用你的成功处理程序时,它不希望传递类似这样的函数,但是你可以执行以下操作:
function makeResponseHandler(func){
return function(data) {
if(data.error){
// display error information
}else{
func(data);
}
};
}
$.ajax({
success: makeResponseHandler(function(){
//Individual request callback function
})
});
success: ...
行会立即调用makeResponseHandler()
函数,并将其传递给您的个人匿名函数。然后makeResponseHandler()
函数返回另一个函数,该函数成为成功回调函数。
答案 1 :(得分:2)
恕我直言,最好的方法是使用“延迟”对象,以及在将它们传递给你自己的回调之前预处理你的AJAX结果的函数:
function errorCheck(data) {
if (data.error) {
// display errors
...
return $.Deferred().reject(); // "fake" a failure
} else {
return arguments;
}
}
用法:
$.ajax(...).then(errorCheck).done(function(data) {
// normal callback function processing
...
}).fail(function() {
// called if AJAX fails, or if data.error is set
...
});
这使您可以根据每次通话决定是否要使用errorCheck
逻辑,还允许errorCheck
使用$.get
,{{1}等等。
答案 2 :(得分:0)
试
$.ajax({
url: "/path/",
success: handleResponse
});
答案 3 :(得分:0)
为什么不呢?
$.ajax({
url: "/path/",
success: function(data){
handleResponse(data, function(){
});
}
});
function handleResponse(data, callback){
if(data.error){
display error information
}else{
callback.call();
}
}
答案 4 :(得分:0)
我不认为这样的事情已经存在了,但是你可以用像
之类的东西来调整ajax调用function doAjax(url, callback) {
$.ajax({
url: "/path/",
success: function (...) {
handleResponse();
callback();
}
});
}
doAjax(“/ path”,function(){..});
答案 5 :(得分:0)
$(document).ajaxcomplete(function(){
//This function is executed on every ajax call completion.
});
然后,您只需按照自己的意愿执行请求即可...
$.ajax({
url: "/path/",
success: function(){
//My handler for this call.
}
});
您可以在http://api.jquery.com/category/ajax/global-ajax-event-handlers/
了解更多信息答案 6 :(得分:0)
这是进行常见ajax验证的简单方法。
$.ajax({
success: function(data){
alert("Hi");
//DO WHATEVER VALIDATIONS YOU WANT TO DO HERE
ajaxPostSuccess(data);
}
});
function ajaxPostSuccess(data){
//DO THE REMAINING HERE
}