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

$.ajax({async:false,url:root+"/recordcode/recordcode/domainList",success:function(dat... $.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);
}
}
})结果如图,谁能帮忙解决下,分数不是问题
展开
 我来答
coddykilly
2012-03-16 · TA获得超过682个赞
知道小有建树答主
回答量:295
采纳率:100%
帮助的人:275万
展开全部
变量作用域污染。每次循环的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确实会对服务器造成很大压力。建议优化一下。
追问
没办法同事采纳两个答案啊?很感谢你的回答……
tz6060996
2012-03-16 · TA获得超过2282个赞
知道大有可为答主
回答量:1171
采纳率:100%
帮助的人:1615万
展开全部
1、用firefox 加firebug插件查看一下每次循环的data:{'domainid':domainid,'domainname':domainname,'recordcode':recordcode,'username':username},是不是不同;

如果不同
2、看一下服务端返回值是否相同,如果相同则问题出在服务器端。
追问
数据是不同的,如果调试,显示的数据是正常的,但是不调试直接执行就是这种重复显示一条数据,不知道为什么
追答
估计是异步嵌套带来的问题,你这段代码不太合理,循环异步给服务器发送请求,不仅给网络和服务器端造成很大压力,而且容易导致返回的数据因异步的原因出现顺序混乱。

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

还有就是:你这段代码中第一个$.ajax请求的数据,并没有在客户端看到应用,而是稍作处理又送回服务器端,这个来回似乎没有什么实际意义,还不如直接在服务端将最终结果处理好后再发至客户端。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式