搜索
您的当前位置:首页正文

Ajax的循环如何实现

2023-11-30 来源:微柏美食网
这次给大家带来Ajax的循环如何实现,实现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);});

测试结果如下:

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

Ajax提交form表单的实例详解(附代码)

Ajax获取全国天气预报的API数据

小编还为您整理了以下内容,可能对您也有帮助:

怎么使用Ajax实现循环

这次给大家带来怎么使用Ajax实现循环,使用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);

});测试结果如下:

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

ajax可以处理服务器返回哪些数据类型?

完美处理json数据无法执行success

如何在一个循环执行ajax方法里面嵌套的ajax方法

这种问题 可以这样做,

将 ajax 请求封装 成一个函数。

将循环中的参数 传入函数 执行,

这样可以 避免 每次执行的ajax 可能都是循环的最后一次

每次循环的时候 由于是异步处理,(同步请求不会有这样的问题)

当ajax 准备执行的时候 ,去读取循环中的参数,

而这个时候 循环的值已经不最开始的那个了 ,

,我们将这个值保存在参数中, 而这样,

ajax 去请求的时候 读取的是参数值, 而不是循环的值

function a(){

$.ajax({

success:function(data){

for(循环data){

//这样可以避免 循环执行完了 ajax 还没执行的问题

fn_ajax(data[i])

}

},

});

function fn_ajax(data){

$.ajax({

success:function(){

}

});

}

}

如何利用jquery ajax实现循环的ajax请求

一般ajax提交防止浏览器缓存在请求的url后面加一个时间戳,

例如:

$.ajax({

type : "POST",

url : 'demo.action?s='+new Date().getTime();,

data:{"hotelId":hotelId},

async:false,

cache :false,

dataType : "json",

success : function(json){

//获取后台json格式 dataType : 可选 xml,html.script,json.text ,_default

//data:{"hotelId":hotelId}, hotelId 是提交的参数

//type : "POST", 可以get 可以post

demo();

}

});

function demo()

{

$.ajax({

type : "POST",

url :'demo.action',

data:{"hotelId":hotelId},

async:false,

cache :false,

dataType : "json",

success : function(json){

}

});

}

微柏美食网还为您提供以下相关内容希望对您有帮助:

如何在一个循环执行ajax方法里面嵌套的ajax方法

将 ajax 请求封装 成一个函数。将循环中的参数 传入函数 执行,这样可以 避免 每次执行的ajax 可能都是循环的最后一次 每次循环的时候 由于是异步处理,(同步请求不会有这样的问题)当ajax 准备执行的时候 ,去读取循环中的参数,而这个时候 循环的值已经不最开始的那个了 ,,我们将这个值保存在参数...

ajax中如何把传递过来的json数据循环遍历出

先把传递过来的字符串转换成对象,再按照一般思路遍历就可以了。var jsonObj = eval("("+xmlHttp.responseText+")");//转换为对象for(var i=0;i&lt;jsonObj.length;i++){...}对象里面有啥属性,按照后台的操作正常取出来就可以了。假如对象jsonObj 里面含有后台的Person对象(并且含有属性:private ...

jquery高手!!怎样循环请求ajax?? 求救!!

var a = new Array(1,2,3);var i=0;Loop_ajax(a[i],i,a);function Loop_ajax(value,identity,array){ .getJSON( "url?value="+ value , null , function(){ if(identity&lt;array.length){ Loop_ajax(array[identity+1],identity+1,array);} else{ alert('循环玩啦');return false;...

jquery问题,$.ajax在for循环里,如何控制完成success函数后再执行下一...

你可以把ajax写成一个函数~然后返回成功后就调用一次这个函数~(就是自己调用自己),这样就可以读出一个显示一个了~

ajax获取的二维数组怎么for循环输出

.ajax({ type:"get",dataType:"json",url:"data.json",//data:{},success:function(res){ (".alert").html("请求成功")var html='';for(var i=0;i&lt;res.length;i++){ html+=""+res[i].name+""} (".list").html(html)},error:function(){ (".alert").html("请求失败...

for循环内 执行$ajax(){}

当i=0的时候,第一次进入for循环,for语句执行到i = 0; i &lt; 6;结束,并不执行i++ &amp;&amp; k++,当第一次循环结束后i=0,k=0。进行第二次循环for语句执行 i &lt; 6; i++ &amp;&amp; k++。并先执行i++ &amp;&amp; k++。这个时候i=0,&amp;&amp;不需要右边的表达式已经可以知道结果,所以就不执行k++。由此第二次...

ajax循环遍历json数组输出到HTML中

循环可以使用:each方法 data.goodList.each(function(i,_this){ // 在这里拼接 })还有一种方法使用template.js

如何将ajax请求返回的Json格式数据循环输出成table形式

首先,Ajax请求数据,(用的是Jquery的Ajax)复制代码 代码如下: (function(){ ('#test').click(function(){ .ajax({ url:'__APP__/Article/jsonTest',type:'post',success:function(data){ var item;.each(data,function(i,result){ item = ""+result['num']+""+result['title']+""...

jquery ajax嵌套循环,将数据显示到页面,但是循环次数对,每次都显示同一...

第一个ajax success里面的改成这样应该就可以了 var json=eval("("+data+")");//转化为json格式。.each(json,function(i,data){ //采用$.each遍历,因为使用的是function回调,变量data在function内闭包 var domainid=data.domainid;var domainname=data.domainname;var recordcode=data.recordcode;...

jquery ajax嵌套循环,将数据显示到页面,但是循环次数对,每次都显示同一...

怎么说呢,ajax不支持嵌套,试试分开,比如这样:.ajax({ async : false,url:root+"/recordcode/recordcode/domainList",success:function(data) { var json=eval("("+data+")");//转化为json格式。for(i =0;i&lt;json.length;i++){ //var jsonobj = json[i];var domainid=json[i]....

Top