一个时间调用多个ajax请求,jQuery的多个ajax请求

3 个答案:

答案 0 :(得分:0)

您有一个条件,您必须在执行下一个AJAX请求之前完成您的AJAX请求。

要使其有效,请执行以下两个选项之一:

从success函数进行后续ajax调用,以确保在上次调用完成时发生下一次调用。

使AJAX调用同步:

醇>

$.ajax({

async: false,

...

}

答案 1 :(得分:0)

解决了问题!

// global variable to check whether the fillStateList already running (waiting for response) or not

var IsBindingState = false;

// An extension method to fillStateList function to synchronize the requests (not to call fillStateList directly, use this method)

function fillStateListSync(cid) {

if (!IsBindingState) {

fillStateList(cid);

}

else {

var loop = setInterval(function () {

if (!IsBindingState) {

fillStateList(cid);

clearTimeout(loop);

}

}, 100);

}

}

// function to bind state list

function fillStateList(cid) {

IsBindingState = true;

$.ajax(

{

type: "POST",

contentType: "application/json; charset=utf-8",

url: someurl,

data: "{'countyId': '" + cid + "'}",

dataType: "json",

success: function (data) {

if (data.d.length > 0) {

//alert('r- ' + stateId); //

// code to bind select list

}

IsBindingState = false;

},

error: function (result) {

IsBindingState = false;

}

});

}

答案 2 :(得分:0)

如果alert从两个不同的来源异步调用,例如,console.log可能会破坏某些内容,例如来自服务器的响应。

警报也不是调试数据的最佳方式。

请改用$.when(fillStateList(12), fillStateList(13), fillStateList(14), fillStateList(15))

.then(function() {

alert("all done");

});,这是一种更好的调试数据的方法。你可以传递一个对象或一个数组,开发者控制台(例如chrome或firefox的firebug?)会很好地显示它

要链接您的ajax请求,您可能希望使用Deferred。

$.when

这里我使用done(请参阅Docs)来链接延期。

您也可以使用$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ).done(function( a1, a2 ) {

var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It"

if ( /Whip It/.test( data ) ) {

alert( "We got what we came for!" );

}

});回调中的参数,其中每个参数都是延迟传入的时间。请参阅我直接从jquery复制的示例

a1

此处a2是对第一个ajax请求的引用,{{1}}是对第二个ajax请求的引用。

在这里你还可以看到一个人没有成功......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值