此问题与this
有关如果我得到以下ajax代码,是否可以在全局成功中进行一些编码,以便不会调用本地完成?我想要做的就是在显示结果之前进行一些全局检查。使用不同的jquery插件(jqgrid,jqform等)在页面上有多个ajax函数,因此包装ajax方法不应该是一个选项。
$('body').ajaxSuccess(function(e){
alert('global');
$('body').unbind('complete');
} );
$.ajax({
type: 'POST',
url: 'http://www.google.com',
data: { name: "John", time: "2pm" } ,
complete: function(data,s,xhr) {
alert('local');
}
})
答案 0 :(得分:0)
您可以创建一个运行Ajax请求的辅助函数,然后首先运行全局代码,然后运行您传入的本地函数。
function wrapAjaxCall(type,url,ajaxData,localComplete)
{
$.ajax({
type: type,
url: url,
data: ajaxData,
complete: function(data,s,xhr) {
myglobal();
localComplete();
}
})
}
这可能不是100%正确,你会得到这个想法。
答案 1 :(得分:0)
我会使用布尔标志来指示你是否应该在完整的回调中执行该函数。
var performLocalComplete = true;
$('body').ajaxSuccess(function(){
alert('global');
if(1 == 1) // Your condition to disable the localComplete
{
performLocalComplete = false;
}
});
$.ajax({
type: 'POST',
url: 'http://www.google.com',
data: { name: "John", time: "2pm" } ,
complete: function(data,s,xhr) {
if (performLocalComplete)
{
alert('local Complete');
}
}
})
答案 2 :(得分:0)
我可以通过抛出异常来模拟退出函数。
$('body').ajaxSuccess(function(){
alert('global');
throw "golbal error";
});
这可以达到我想要的效果。