Jquery 针对所有浏览器的多个ajax和async false
我一次调用多个ajax 例如:Jquery 针对所有浏览器的多个ajax和async false,jquery,ajax,Jquery,Ajax,我一次调用多个ajax 例如: $.ajax({ type:'POST', url:url1, aysnc:false, beforeSend:function() { $("#loader").show(); }, success:function(data) { ///.....do mani
$.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正在调用。请帮助我尝试了所有解决方案。当我们使用aysnc:false调用ajax时,一些浏览器会停止所有动画 我有一个解决方案:首先调用FirstAjax,然后将另一个调用FirstAjax的成功函数 这样,就可以将所有ajax设置为嵌套。所以,您可以使用第一个ajax调用启动loader,并使用最后一个ajax调用停止 像这样的
$("#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();
}
});
}
});
永远不要使用同步ajax调用,而是围绕ajax的异步特性工作。换句话说,尽可能远离
async
设置,不要屈服于将其设置为false的冲动,因为它违背了ajax的全部目的
要通过多个异步调用实现这一点,您应该使用捕获ajax函数返回的所有承诺,然后在它们全部完成时触发回调,类似这样
function doAjax() {
$("#loader").show();
$.when(
$.ajax({
type : 'POST',
url : url1
}),
$.ajax({
type : 'POST',
url : url2
}),
$.ajax({
type : 'POST',
url : url3
})
).done(function() {
$("#loader").hide();
});
}
你说的完全正确,但它一直流到第二个ajax调用,第三个ajaxI调用失败。我尝试了这些方法,但加载程序没有隐藏:(:(