循环发送ajax请求

来源:互联网 发布:手机cad软件 编辑:程序博客网 时间:2024/05/16 23:47

在某些情况下,我们需要连续发送相同的ajax请求,比如提交多套资料,根据多个id请求一组数据,我们就需要循环发送ajax请求

js代码如下:

var testArr=[1,2,3,4];function sendAjax(){var result=[];for(var i=0;i<testArr.length;++i){$.ajax({url : "upload.php",type : "POST",async:true,//异步data :{"param" :testArr[i] },success : function(data)//成功回调{result.push(data);},error : function(){alert("请求错误")}});}doSomething(result);}function doSomething(data){console.log(data);}sendAjax();

php 代码如下:

<?phpecho $_POST['param'];


在控制台输出结果

是个空的数组,造成这个结果的原因是由于ajax请求是异步的,没等到结果返回,就执行了doSomething()函数

解决方案一:

既然ajax是异步的,只要把ajax改成同步可以了,代码如下:

$.ajax({url : "upload.php",type : "POST",async:false,//不异步(同步)data :{"param" :testArr[i] },success : function(data)//成功回调{result.push(data);},error : function(){alert("请求错误")}});
解决方案二:

我们可以等到上一个请求结束再开始下一个请求,直到全部结束,代码如下:

var testArr=[1,2,3,4];function sendAjaxS(dataArr){var index=0;var result=[];sendAjax();function sendAjax(){if(index>=dataArr.length){doSomething(result);return;}$.ajax({url : "upload.php",type : "POST",async:true,data :{"param" :dataArr[index] },success : function(data){result.push(data);index++;sendAjax();},error : function(){alert("请求错误")}});}}function doSomething(data){console.log(data);}sendAjaxS(testArr);

结果如下:


后记:

还有一些是使用定时器的,隔一段时间发送一次,个人以为很不靠谱,毕竟网络延时是不可估计的,无法确定一个合理的时间


0 0
原创粉丝点击