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相同的输出?
答案 0 :(得分:2)
$.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);
});
答案 1 :(得分:1)
不知道......但你可以在事后对数组进行排序。
给出以下输出(模拟测试)
var items = ["1, Beta", "2, Alpha"]
你可以
items.sort(function(a,b){ return b.split(",")[0] - a.split(",")[0] })
答案 2 :(得分:0)
我会将您的回复重新排列为更像这样的内容:
[
{
"key":"2",
"value":"Alpha"
},
{
"key":"1",
"value":"Beta"
}
]
使用数组将确保保留订单。