我有一个问题。
使用 ajax 我发送了一个格式正确的 JSON 对象:
$.ajax({
type: "POST",
url: SITE_URL+'/data.php',
dataType: "json",
data: { ajax: 1 },
success: function(data) {
console.log(data);
}
});
然而,Opera 和 Chrome 虽然接收到相同的对象,但打印出的对象顺序不正确,似乎它们都执行了 ID 号排序,而不是单独放置它!
有没有办法停止这种自动排序?
编辑,在发现它是按索引号排序后,我认为最好的方法可能是不使用索引来存储 object_id,而是存储我想要订购对象的 id 号。
但是我仍然想知道是否有办法停止排序。
谢谢
Edit2,我只想指出,我将采用不同的方式来实现这一点,因为我觉得我正在用这种方法滥用对象。但是我仍然想了解为什么 Opera 和 Chrome 认为更改我的对象 ID 的顺序是他们的权利:
问题是我试图节省处理能力,假设我们有人有 ID,
1.John、2.Frank 和 3.Sally。然而,这些人中的每一个都有一个高属性集(和其他东西)。 1.John.180、2.Frank.220、3.Sally.150。为了节省处理时间,我要求人们的结果按高度排序,这样我就得到了一个包含其他属性的 2、1、3 数组。我将这个数组 JSON 并发送到浏览器。
现在 FF 将保留新订单 People[1] 仍然是 John,但在 For n as person 循环中它们会出现故障。
如果我无法解决这个问题,我将不必在 SQL 阶段进行排序,并在 JS 阶段添加额外的循环和排序到一个数组中,尽管我想避免对浏览器造成更多压力,因为它已经一个Js重页。
非常感谢
最佳答案
遇到同样的问题,按照 dmc 的解决方案,只是在 int 值前面添加了一个空格以使其成为字符串。
使用空格而不是另一个非数字字符的优点是随后的 POST 值可以直接在 mySQL 搜索子句中使用,而无需再次删除。
关于jquery - 如何阻止 Chrome 和 Opera 通过 Index ASC 对 JSON 对象进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5020699/