我一次进行多次ajax调用
示例:
$.ajax({
type:'POST',
url:url1,
aysnc:false,
beforeSend:function()
{
$("#loader").show();
},
success:function(data)
{
///.....do manipulation
$("#loader").hide();
}
});
$.ajax({
type:'POST',
url:url1,
aysnc:false,
beforeSend:function()
{
$("#loader").show();
},
success:function(data)
{
///.....do manipulation
$("#loader").hide();
}
});
$.ajax({
type:'POST',
url:url1,
aysnc:false,
beforeSend:function()
{
$("#loader").show();
},
success:function(data)
{
///.....do manipulation
$("#loader").hide();
}
});
我需要显示加载器,直到ajax成功上面的代码才能在FIREFOX中工作,但不能在IE和CHROME中,因为没有看到加载器但我的ajax被调用请帮助我尝试所有解决方案
答案 0 :(得分:1)
当我们使用aysnc:false调用ajax时,某些浏览器会停止所有动画。
我有一个解决方案:首先先调用ajax,然后将其他内容放到第一个ajax的成功函数中......
像这样,你可以设置所有嵌套的ajax。所以,你可以通过第一个ajax调用启动loader并使用last ajax call停止...
像这样......
$("#loader").show();
$.ajax({
type:'POST',
url:url1,
success:function(data)
{
///.....do manipulation
$.ajax({
type:'POST',
url:url1,
beforeSend:function()
{
$("#loader").show();
},
success:function(data)
{
///.....do manipulation
$("#loader").hide();
}
});
}
});
答案 1 :(得分:0)
永远不要使用同步ajax调用,而是改变ajax的异步性质。换句话说,尽可能远离async
设置,不要屈服于将其设置为假的冲动,因为它会破坏ajax的整个目的。
要使用多个异步调用执行此操作,您应该使用$.when
来捕获ajax函数返回的所有promise,然后在完成所有操作后触发回调,类似这样
function doAjax() {
$("#loader").show();
$.when(
$.ajax({
type : 'POST',
url : url1
}),
$.ajax({
type : 'POST',
url : url2
}),
$.ajax({
type : 'POST',
url : url3
})
).done(function() {
$("#loader").hide();
});
}