精华内容
下载资源
问答
  • 循环发送ajax请求

    千次阅读 2016-08-23 11:30:30
    循环发送ajax请求解决方案

    在某些情况下,我们需要连续发送相同的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 代码如下:

    <?php
    echo $_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);

    结果如下:


    后记:

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


    展开全文
  • 循环发送ajax请求的解决方法

    万次阅读 2015-12-14 16:58:10
    今天需要用js 循环发送ajax请求,获取信息, 一开始,就直接按照逻辑写, for(var i=0; i; i++){ api_url = items[i].url; console.log(i); $.ajax({ type: 'get', url: api_url, dataType: "json", ...

    今天需要用js 循环发送ajax请求,获取信息,

    一开始,就直接按照逻辑写,

    for(var i=0; i<items.length; i++){
    	api_url = items[i].url;
    	console.log(i);
    	$.ajax({
    		type: 'get',
    		url: api_url,
    		dataType: "json",
    		async: false,
    		success: function(json){
    			console.log("test");
    			var img = json.img;
    		},
    		error: function(data){
    			
    		}
    	});
    }

    按照正常思维,程序应顺序执行,输出应该如下:

    1

    test

    2

    test

    ...

    ...

    实际结果却非如此,输出如下:

    1

    2

    3

    ...

    test

    test

    test

    而且得到的img还都是一样的,

    这个结果,显然不是我要的,怎么办,想了很久,查资料,

    参考: http://www.oschina.net/code/snippet_574558_13233

    http://zhidao.baidu.com/link?url=XpEn58sMKMWzVF7FIAilpvEfA-AOSahtNFF1_VJrXtEvs3bNE0I_frvxiviczkVBHXkX5WQ18eVTfdJlgeAEh_


    终于搞定,运用递归,代码如下:

    currentIndex = 0;
    function getImg(){
    	if(currentIndex>=items.length){ 
    		return;
    	}
    	var url = item[url];
    	console.log(i);
    	$.ajax({
    		type: 'get',
    		url: url,
    		dataType: "json",
    		async: false,
    		cache: true,
    		success: function(json){
    			currentIndex++;
    			console.log("test");
    			var img = json.img;
    
    			getImg();
    		},
    		error: function(data){
    			console.log("error...");
    			currentIndex++;
    			getImg();
    		}
    	});
    }

    通过以上写法,结果如下:

    1

    test

    2

    test

    ...

    ...


    js的异步,有时候坑死人啊!



    展开全文
  • 每次ajax请求获取一张图片,然后循环调用ajax,结果是页面显示是重复一张图片,而且很混乱,有时候还出来的效果不一样。看了一下她的代码,发现这是ajax异步造成的。 给出的方案是,让后台统一返回,但是后台由于...

    给一个分公司调试看问题,她说ajax调用,返回结果不对。每次ajax请求获取一张图片,然后循环调用ajax,结果是页面显示是重复一张图片,而且很混乱,有时候还出来的效果不一样。看了一下她的代码,发现这是ajax异步造成的。

    给出的方案是,让后台统一返回,但是后台由于加密获取方式等原因修改不了,然后看了一下网上的循环调用ajax请求的方式:递归;

    重点看下面的代码:

     

    currentIndex = 0;
    function getImg(){
    	if(currentIndex>=items.length){ 
    		return;
    	}
    	var url = item[url];
    	console.log(i);
    	$.ajax({
    		type: 'get',
    		url: url,
    		dataType: "json",
    		async: false,
    		cache: true,
    		success: function(json){
    			currentIndex++;
    			console.log("test");
    			var img = json.img;
     
    			getImg();
    		},
    		error: function(data){
    			console.log("error...");
    			currentIndex++;
    			getImg();
    		}
    	});
    }
    

    欢迎关注我的公众号一起学习交流:


    勤奋的菜才是我

    展开全文
  • 是这样的,用jquery循环发送ajax异步请求,去访问系统的某个方法;这种方式是不 是就相当于多个用户同时访问这个方法?这个问题我有些疑问,因为,就算是ajax异步请求,他也还是一个一个来的啊,,,这就有些尴尬了...
  • 循环发送ajax请求的问题

    千次阅读 2018-02-05 21:17:04
    在系统开发中(前台页面使用jquery)遇到了以下需求,要根据多个主机名称去得到每一个主机的设备id,一开始我用的是在for循环里面发送多个ajax请求方式,但这种方式有很多缺点,首先因为是异步,可能造成请求结果...
    在系统开发中(前台页面使用jquery)遇到了以下需求,要根据多个主机名称去得到每一个主机的设备id,
    一开始我用的是在 for 循环里面发送多个ajax的请求方式,但这种方式有很多缺点,首先因为是异步,
    可能造成请求结果丢失,其次如果将请求方式改为同步,则会造成浏览器假死现象。

    后来经过百度+google,得到了一种比较好的解决方法,就是使用递归。代码如下:


    递归的好处就是可以知道什么时候继续循环,什么时候执行完毕,并回调后面的流程

    var currentIndex=0;//退出递归的条件变量
    var data = {};
        function newRequest(){
            if(currentIndex>=data.length){
                return; //callback
            }
            var name = data[currentIndex].name;
                $.ajax({
                    url: url  
                    type: 'get',
                    timeout: 500,
                    async: true,
                    dataType: 'json',
                    complete:function(XMLHttpRequest,textStatus){
                        if (textStatus === "success") {
    			var res = $.parseJSON(XMLHttpRequest.responseText);
       			// callback
    	            }
                        newRequest();
                    }
                });
        }
        newRequest();


    展开全文
  • 循环发送AJAX请求,变量问题

    千次阅读 2014-11-18 14:21:28
    ajax请求有同步和异步两种方式: 1、异步请求是发送请求后不必等待服务器返回就执行后续操作。 2、同步请求就是发送请求后必须等待服务器返回结果后才继续执行。 ajax函数如下(jquery):
  • 循环中发送jquery ajax请求我的下一步是发送Ajax请求到每个街道Id的服务器并获取回应。目前,我正在使用唯一的For循环和发送每个街道Id的Ajax请求,如下所示。for (var index in streetIds) {sendAjax...
  • 主要为大家剖析了JavaScript for循环发送AJAX请求问题,感兴趣的小伙伴们可以参考一下
  • 今天搞ajax的时候,一个有趣的地方,,每个迭代中都要发送一个get请求,因为迭代的速度太快,一个请求还没有完成就进行下一个迭代,在chrome和ff上,除最后一个请求外,其它请求都被取消了。所以该怎么办呢?设置...
  • 先上代码: async function getAllData() { ...上面的代码,循环发送请求时可以达到同步代码的效果,等待ajax请求发送结束之后,才会发送下一个请求 说一下遇到的坑: 不使用 async 和 await 的话,因
  • 发送Ajax请求

    2017-08-09 16:01:29
    发送ajax需要五步: 1、创建异步对象 2、设置请求的url等参数 3、发送请求 ... ... document.querySelector('#btnAjax').onclick = function () { // 发送ajax 请求 需要 五步 // 1.创建异步对象 var ajax
  • 原先是for循环发送ajax请求导致并发过高的问题 ,先采用定时器的方式,定时发送ajax请求。以便降低并发。 //生成ajaxPromise对象 async function createAjaxPromise(newTempData) { //console.log(newTempData....
  • jquery 循环调用ajax发送请求

    千次阅读 2014-09-01 15:20:47
    jquery 循环调用ajax发送请求,如果用 for
  • ![图片说明]...这是一开始发送请求,可以看出是正常响应了,但是到后来 !...请求未响应,大约前9个请求是响应的,发送请求的时间算是比较快的, 请问下这是什么原因
  • 嗯,我有一个“ID”列表,我...如何通过jQuery和Queue发送ajax请求?逻辑很简单: 我们在循环中创建一个循环,并为每个ID创建一个asinconica的Ajax请求。 问题是,异步Ajax请求阻止我访问全局变量ID。例子:// Thi...
  • 循环ajax请求

    千次阅读 2017-06-14 09:23:13
    (1)问题:循环ajax请求,ajax是异步的,可以使用递归代替循环在请求成功的回调函数中递归调用请求函数 var result = []; for(var i = 0 ; i ; i++){ send(result[i]); //如何保证在第一条数据发送成功后再...
  • 使用layui时,发送ajax请求,点击发送一次,会自动提交两次 原因分析: 因为使用layui次数不多,所以不是很熟练,看文档写了个类似于bootstrap的模态框的弹出层,当提交模态框中的数据时,发现提交一次会插入两次...
  • 循环发送AJAX的方法

    2018-10-07 21:29:58
    我在之前讲过Ajax的问题,但是并没有特别突出ajax的异步性.这里用阮一峰老师的《es6入门》中的一段话来解释:JS中的同步性与异步性。 /***************************下面是引用*************************************/...
  • 需求:最近项目需要循环发送ajax向后台发送请求导出文件。有多个业务线,如果一次性全部下载后台负荷会过大,所以希望前台根据每条业务线单独发送请求,后台进行区分下载。我上网查阅了很多资料,下面附上代码。 ...
  • JavaScript for循环中使用Ajax发送请求

    万次阅读 2016-11-19 15:15:40
    问题是这样的: 前端是有一个聊天的组件,点击该组件会出现一个聊天用户的界面;是用树结构显示的;而调用的function中使用的是for循环Ajax循环发出请求
  • 递归解决循环ajax请求

    2020-04-27 14:13:15
    此操作采用递归ajax请求来做。 我们简化这个问题做一个模拟,首先后端数据是 {“id”:1,“name”:“战列舰”,“age”:51,“dis”:“军事发展的必然趋势”},{“id”:2,“name”:“战列舰”,“age”:...
  • 第一种方式实现ajax异步刷新--ajax 2.需求2: 第二种方式实现ajax异步刷新--get 3.需求3: 第三种方式实现ajax异步刷新--post 4.需求4: 第四种方式实现ajax异步刷新--getJSON 5.需求5: 第五种 使用jquery...
  • NULL 博文链接:https://yjck.iteye.com/blog/745692
  • 也就是说主外键自身关联的是个死循环,那怎么才能不让他出现这种情况呢,应该有个配置的参数后者终止循环的地方吧,查看发 现,jsonConfig,config应该是配置参数,发现了一个属性PropertyFilter,PropertyFilter ...
  • $(function(){ ...//step 1:发送ajax请求并得到回调结果  $.ajax({  type:'post',  url:ctx+"/getUnionInterfaceTemplate",  dataType:'json',  error:function(data,status){alert(stat
  • 在for循环中执行ajax请求,在项目中发现这样只能执行第一个请求,后面的请求都是失败的。原因是ajax的执行是异步,第一次循环结束时,对应的第一次请求还没有完成,但是这时候已经开始第二次循环了,当执行第二次...
  • https://blog.csdn.net/u012366142/article/details/78041167
  • 做一个功能,循环遍历IP地址发送ajax请求,知道遍历到响应的IP并记录下来,有一个问题,就是遍历到正确的服务器IP后,alert出来的i都是200,如何才能得到那个正确的i值?求助~! var startip2="192.168.0.80"; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,708
精华内容 12,283
关键字:

循环发送ajax请求