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);
}
}
})结果如图,谁能帮忙解决下,分数不是问题 展开
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);
}
}
})结果如图,谁能帮忙解决下,分数不是问题 展开
2个回答
展开全部
变量作用域污染。每次循环的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确实会对服务器造成很大压力。建议优化一下。
第一个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确实会对服务器造成很大压力。建议优化一下。
追问
没办法同事采纳两个答案啊?很感谢你的回答……
展开全部
1、用firefox 加firebug插件查看一下每次循环的data:{'domainid':domainid,'domainname':domainname,'recordcode':recordcode,'username':username},是不是不同;
如果不同
2、看一下服务端返回值是否相同,如果相同则问题出在服务器端。
如果不同
2、看一下服务端返回值是否相同,如果相同则问题出在服务器端。
追问
数据是不同的,如果调试,显示的数据是正常的,但是不调试直接执行就是这种重复显示一条数据,不知道为什么
追答
估计是异步嵌套带来的问题,你这段代码不太合理,循环异步给服务器发送请求,不仅给网络和服务器端造成很大压力,而且容易导致返回的数据因异步的原因出现顺序混乱。
建议:在客户端将'domainid''domainname''recordcode''username'组成JSON数组,然后一次性发送至服务器端处理,服务器同样返回一个Json数组交客户端一次性显示出来。
还有就是:你这段代码中第一个$.ajax请求的数据,并没有在客户端看到应用,而是稍作处理又送回服务器端,这个来回似乎没有什么实际意义,还不如直接在服务端将最终结果处理好后再发至客户端。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询