JSON 数据:
{"2":"Alpha","1":"Beta"}
数据格式是固定的,即我不能改变它,我只能修改javascript/jQuery代码。
$.getJSON("www.myurl.com", function(data) {
var items = [];
$.each(data, function(key, val) {
items.push(key + ', ' + val);
});
alert(items);
});
Chrome、IE9 和 Opera 显示:
1、Beta、2、Alpha
Firefox 和 Safari 显示:
2、Alpha、1、Beta
问题1:哪个是正确的?
问题 2:我希望数据按 Firefox 和 Safari 中的顺序排列。对我来说,确保 Chrome、IE9 和 Opera 产生与 Firefox 和 Safari 相同的输出的最简单方法是什么?
最佳答案
$.each
对 javascript 数组进行操作(索引是基于 0 的整数)。您显示的 JSON 不是数组。它是一个关联数组,这就是 javascript 对象。所以:
$.getJSON("www.myurl.com", function(data) {
var items = [];
for (var prop in data) {
if (data.hasOwnProperty(prop)) {
items.push(prop + ', ' + data[prop]);
}
}
alert(items);
});
或者,如果您想使用
$.each
则使用数组,如下所示:["Alpha", "Beta"]
然后:
$.getJSON("www.myurl.com", function(data) {
var items = [];
$.each(data, function(index, element))
items.push(index + ', ' + element);
}
alert(items);
});
关于jQuery getJSON 数据顺序因浏览器而异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7409089/