我有一组jSon数据(无错误),我需要使用$.each函数循环,但它只显示来自jSon的最后一条数据记录.
这是我的jquery:
$.ajax({
type: "POST",
url: '/update-recent-stat',
dataType: 'json',
success: function(jsonData)
{
var counterjson = 1;
$.each(jsonData, function(i, value){
var count = counterjson++;
var link = jsonData[count].linkid;
var time = jsonData[count].time;
var value = jsonData[count].value;
var sender = jsonData[count].sender;
$("#DownBoxL ul li").html("<div class=Timestamp>"+time+"</div><div class=UserName><a href=\"#"+link+"\">"+sender+"</a> ("+count+") msg sent!</div><div class=TagValue>+"+value+"</div>").show();
});
}
});
所以thejSon数据是一个包含15条记录的集合,例如:
[{"counter":"1","linkid":"1448524027","sender":"User1","value":"5","time":"5 sec ago"},{"counter":"2","linkid":"1448524027","sender":"User2","value":"5","time":"5 min ago"}]
为了记录,使用这段代码只显示最后一条记录!
有谁知道问题在哪里?
感谢和问候.
最佳答案 因为你每次都要覆盖所有的HTML.您可以使用eq使相同的代码工作.并且使用$.getJSON它很容易用于JSON数据,它足以满足您的要求.
$.getJSON('/jsonurl/file.json', function(jsonData)
{
var counterjson = 1;
$.each(jsonData, function(i, value){
var count = counterjson++;
var link = jsonData[count].linkid;
var time = jsonData[count].time;
var value = jsonData[count].value;
var sender = jsonData[count].sender;
$("#DownBoxL ul li:eq(" + i + ")).html("<div class=Timestamp>"+time+"</div><div class=UserName><a href=\"#"+link+"\">"+sender+"</a> ("+count+") msg sent!</div><div class=TagValue>+"+value+"</div>").show();
});
}
});