jQuery getJSON 数据顺序因浏览器而异
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 相同的输出的最简单方法是什么?
JSON data:
{"2":"Alpha","1":"Beta"}
The data format is fixed, i.e. I can't change it, I can only amend the javascript/jQuery code.
$.getJSON("www.myurl.com", function(data) {
var items = [];
$.each(data, function(key, val) {
items.push(key + ', ' + val);
});
alert(items);
});
Chrome, IE9, and Opera display:
1, Beta,2, Alpha
Firefox and Safari display:
2, Alpha,1, Beta
Question 1: Which is correct?
Question 2: I want the data ordered as in Firefox and Safari. What's the easiest way for me to ensure Chrome, IE9, and Opera produce the same output as Firefox and Safari?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
$.each
对 JavaScript 数组进行操作(索引是基于 0 的整数)。您显示的 JSON 不是数组。它是一个关联数组,这就是 javascript 对象。所以:或者如果你想使用
$.each
然后使用数组,如下所示:然后:
$.each
operates on javascript arrays (indexes are 0 based integers). The JSON you have shown is not an array. It's an associative array which is what javascript objects are. So:Or if you want to use
$.each
then use arrays, like this:and then:
不知道...但您可以事后对数组进行排序。
给出以下输出(模拟测试),
您可以
no idea... but you can sort the array after the fact.
given the following output (simulated for testing)
you can
我会将您的响应重新安排为更像这样的内容:
使用数组将确保保留顺序。
i would rearrange your response to something more like this:
using an array will ensure that the order is preserved.