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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery ajax嵌套循环,将数据显示到页面,但是循环次数对,每次都显示同一条数据, 代码:相关的知识,希望对你有一定的参考价值。

$.ajax(
async : false,
url:root+"/recordcode/recordcode/domainList",
success:function(data)
var json=eval("("+data+")");//转化为json格式。
for(i =0;i<json.length;i++)
//var jsonobj = json[i];
var domainid=json[i].domainid;
var domainname=json[i].domainname;
var recordcode=json[i].recordcode;
var username=json[i].username;
//alert(domainid+" "+domainname+" "+recordcode+" "+username);
var temp="true";
$.ajax(
url:root+"/recordcode/recordcode/checkRecordCode",
data:'domainid':domainid,'domainname':domainname,'recordcode':recordcode,'username':username,
cache:false,
success:function(data)
if(data=="false")
temp=data;

if(data!="false" && data!="same")
_addTd="<tr id='tr"+domainid+"' class=\"out\" onmouseover=\"this.className='over'\" onmouseout=\"this.className='out'\"><td>"
+username+"</td><td>"
+domainname+"</td><td>"
+recordcode+"</td><td>"
+data+"</td><td>"
+" "+"</td><td></td>"
+"</tr>"
$(".tab_title").after(_addTd);


)结果如图,谁能帮忙解决下,分数不是问题

变量作用域污染。每次循环的i变量被公用了,所以到最后取出来的变量都是最后一个i的值
第一个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;
var username=data.username;
var temp="true";
$.ajax(
url:root+"/recordcode/recordcode/checkRecordCode",
data:'domainid':domainid,'domainname':domainname,'recordcode':recordcode,'username':username,
cache:false,
success:function(data)
if(data=="false")
temp=data;

if(data!="false" && data!="same")
_addTd="<tr id='tr"+domainid+"' class=\"out\" onmouseover=\"this.className='over'\" onmouseout=\"this.className='out'\"><td>"
+username+"</td><td>"
+domainname+"</td><td>"
+recordcode+"</td><td>"
+data+"</td><td>"
+" "+"</td><td></td>"
+"</tr>"
$(".tab_title").after(_addTd);


);
)

整体上就是这个思路,应该可以解决问题了。
如果还有问题请追问,或者加我的hi咨询

PS:确实如tz6060996所说,在循环里面再去ajax确实会对服务器造成很大压力。建议优化一下。追问

没办法同事采纳两个答案啊?很感谢你的回答……

参考技术A 1、用firefox 加firebug插件查看一下每次循环的data:'domainid':domainid,'domainname':domainname,'recordcode':recordcode,'username':username,是不是不同;

如果不同
2、看一下服务端返回值是否相同,如果相同则问题出在服务器端。追问

数据是不同的,如果调试,显示的数据是正常的,但是不调试直接执行就是这种重复显示一条数据,不知道为什么

追答

估计是异步嵌套带来的问题,你这段代码不太合理,循环异步给服务器发送请求,不仅给网络和服务器端造成很大压力,而且容易导致返回的数据因异步的原因出现顺序混乱。

建议:在客户端将'domainid''domainname''recordcode''username'组成JSON数组,然后一次性发送至服务器端处理,服务器同样返回一个Json数组交客户端一次性显示出来。

还有就是:你这段代码中第一个$.ajax请求的数据,并没有在客户端看到应用,而是稍作处理又送回服务器端,这个来回似乎没有什么实际意义,还不如直接在服务端将最终结果处理好后再发至客户端。

本回答被提问者采纳

以上是关于jquery ajax嵌套循环,将数据显示到页面,但是循环次数对,每次都显示同一条数据, 代码:的主要内容,如果未能解决你的问题,请参考以下文章

怎么将ajax返回的数据显示在jsp页面上

急! jquery $.each 嵌套循环遍历

循环问题 - AJAX/jQuery

如何使用 AJAX (jquery) 将嵌套的对象数组传递和接收到 c# WebMethod 中?

使用 jQuery Ajax 将数据发布到另一个 php 文件 [重复]

jquery嵌套网页获取最外层父页面