Ajax中的循环方案
ajax 简介
ajax 由 html、javascript™ 技术、dhtml 和 dom 组成,这一杰出的方法可以将笨拙的 web 界面转化成交互性的 ajax 应用程序。本文的作者是一位 ajax 专家,他演示了这些技术如何协同工作 —— 从总体概述到细节的讨论 —— 使高效的 web 开发成为现实。他还揭开了 ajax 核心概念的神秘面纱,包括 xmlhttprequest 对象。
五年前,如果不知道 xml,您就是一只无人重视的丑小鸭。十八个月前,ruby 成了关注的中心,不知道 ruby 的程序员只能坐冷板凳了。今天,如果想跟上最新的技术时尚,那您的目标就是 ajax。
但是,ajax 不仅仅 是一种时尚,它是一种构建网站的强大方法,而且不像学习一种全新的语言那样困难。
一、业务需求
在开发中,当一个列表页面加载完成后,我需要根据列表每一项的id去服务器端获取对应的数据然后再把获取的数据赋给当前id对应的标签。
例如如下表格:
我有一系列的商品编号,我需要根据商品编号通过ajax到服务器获取商品对应的名称,然后再用js更新界面(实际中的业务当然不是获取商品名称这么简单)
二、实现方案
2.1 错误方案
一般情况下,我们会直接想到,直接写个for循环,在循环内发起ajax请求获取数据,再把获取的数据更新到对应的id对应的标签上,
如下:
我们以数组模拟一些列id:
var array = [1, 3, 2, 5, 3];
循环的ajax请求方法:
function foreach_ajax() { for (var i = 0; i < array.length; i++) { $.get("/home/loop_ajax", { value: array[i] }, function (data) { console.log(array[i]+","+data); }); } }
调用:
$(function () { foreach_ajax(); });
测试结果如下:
我们可以看到,在循环的内部我们根本取不到array[i]的值。
导致这种结果的原因是:ajax是异步执行的,在循环结束的时候第一次ajax还没有将服务器数据返回,而循环结束的时候for中的变量i已经释放了,所以array[i]=undefined
2.2 正确方案
正确的方式是以递归的方式循环ajax。
如下:
我们以数组模拟一些列id:
var array = [1, 3, 2, 5, 3];
递归的ajax请求方法:
function loop_ajax(index, array) { if (index < array.length) { var value = array[index]; $.get("/home/loop_ajax", { value: value }, function (data) { console.log(array[index] + "," + data); if (index < array.length) { loop_ajax(index + 1, array); } }); } }
调用:
$(function () { loop_ajax(0, array); });
测试结果如下:
以上所述是小编给大家介绍的ajax中的循环方案,希望对大家有所帮助
上一篇: AJAX实现瀑布流布局
推荐阅读
-
理解jquery ajax中的datatype属性选项值
-
如何解决Ajax访问不断变化的session的值不一致以及HTTP协议中的GET、POST的区别
-
ajax中的async属性值之同步和异步及同步和异步区别
-
jquery中AJAX请求 $.post方法的使用
-
vue中v-for循环给标签属性赋值的方法
-
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
-
利用Shell脚本循环读取文件中每一行的方法详解
-
iOS开发中实现新闻图片的无限循环展示的方法
-
C#中for循环、while循环循环执行的方法
-
jquery中ajax使用error调试错误的方法教程