我有一个与数据库对话的 servlet,然后返回一个有序(按时间排序)对象的列表。在 servlet 部分,我有
//访问数据库,返回用户对象列表,有序
ArrayList users = MySQLDatabaseManager.selectUsers();
//构造响应
JSONObject jsonResponse = new JSONObject();
整数键 = 0;
for(用户用户:用户){
log("检索用户" + user.toString());
JSONObject jsonObj = new JSONObject();
jsonObj.put("name", user.getName());
jsonObj.put("time", user.getTime());
jsonResponse.put(key, jsonObj);
键++;
}
//写出
out.print(jsonResponse);
从日志中我可以看到数据库以正确的顺序返回用户对象。
在前端,我有
成功:函数(jsonObj){
var json = JSON.parse(jsonObj);
变量 ID = 0;
$.each(json,function(i,item) {
var time = item.time;
var name = item.name;
身份证++;
$("table#usertable tr:last").after('<tr><td>' + id + '</td><td width="20%">' + 时间 +
'</td><td>' + 名称 +
'</td></tr>');
});
},
但是顺序变了。
我只在返回的列表很大(超过 130 个用户)时才注意到这一点。
我尝试使用 Firebug 进行调试,Firebug 中的“响应选项卡”显示列表的顺序与 servlet 中的日志不同。
我做错了什么吗?
编辑:示例
{"0":{"time":"2011-07-18 18:14:28","email":"xxx@gmail.com","origin":"origin-xxx","source":" xxx","目标":"xxx","url":"xxx"},
"1":{"time":"2011-07-18 18:29:16","email":"xxx@gmail.com","origin":"xxx","source":"xxx", "目标":"xxx","url":"xxx"},
“2”:
,...,
"143":{"time":"2011-08-09 09:57:27","email":"xxx@gmail.com","origin":"xxx","source":"xxx", "目标":"xxx","url":"xxx"}
,...,
"134":{"time":"2011-08-05 06:02:57","email":"xxx@gmail.com","origin":"xxx","source":"xxx", "目标":"xxx","url":"xxx"}}