ajax调用上一个ajax,关于jquery:当频繁使用ajax请求调用函数时,如何在处理下一个请求之前等待上一个ajax请求完成?...

本问题已经有最佳答案,请猛点这里访问。

我在我的代码中有一个ajax请求,如下所示:

function show_detail()

{

     $('#product_'+index).html('loading.jpg loading...');

$.ajax({

type:"GET",

url:"someUrl",

data: dataString,

success: function(msg){

$('#product_'+index).html(msg);

}

});

}

我的要求是在单击一组产品图像中的任何产品图像时调用函数show_detail(),并在div中显示加载图像,直到从ajax请求中完全加载了产品详细信息为止。 当从ajax请求中加载产品详细信息时,我必须用产品详细信息覆盖同一div,但是问题是当同时单击多个链接时,我在后续的div中获得了多个加载图像。

因此,我想等待最后一个ajax请求完成,然后再调用同一函数(show_detail()),并且一次仅显示一个加载图像。 我也不想用async:false冻结浏览器

提前致谢。

您能否仅使用诸如loading之类的全局变量,在单击按钮时将其设置为true,然后在进行AJAX调用之前检查以确保其为false?

您是否看过stackoverflow.com/questions/3952387/?

谢谢。 但这会导致同时显示多个加载图像。

jQuery.when()提供了一种基于一个或多个对象(通常是表示异步事件的Deferred对象)执行回调函数的方法。 它使语法简洁明了,并避免涉及任何全局变量(例如ajaxStart和ajaxStop),这些全局变量在页面开发时可能会产生有害的副作用。以下显示了一个简单的示例。请尝试阅读有关它的更多内容... :)

var req1 = $.ajax({...});

var req2 = $.ajax({...});

var req3 = $.ajax({...});

$.when( req1, req2, req3 ).done(function(){

console.log("all done")

});

FYI

jQuery.when()

谢谢。但是我只为ajax调用提供了一个代码。 相同的代码正在执行背对背函数调用。我想执行所有请求,但一个接一个。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值