我正在使用以下代码向PHP脚本发出请求:
$.ajax({
method: "POST",
url: "myAPI.php",
data: {
orderById: 2,
action: 'returnStuff',
},
success: function(data){
$.each(data.data, function(key, value) {
var $targetToMove = $('.shape.'+value.attr_name);
//if element already exists on page, move it to the end of the container
if($('.'+value.xml_name).length){
$('.container').append($targetToMove);
}
});
}
});
以下是我的返回数据的简化示例
{"data":{"0":{"id":"1","name":"This","color":"blue"},
"1":{"id":"2","name":"That","color":"red"},
"2":{"id":"3","name":"whatever","color":"blue"}}}
如果orderById等于1,则数据由id从最低到最高以数字形式返回。如果等于2,则从最高到最低以数字方式返回,如下所示:
{"data":{"0":{"id":"3","name":"whatever","color":"blue"},
"1":{"id":"2","name":"That","color":"red"},
"2":{"id":"1","name":"This","color":"blue"}}}
这个想法是API按照我想要的顺序返回数据,然后在ajax调用成功后,元素将按照返回的数据对象的顺序重新排列在页面上。
这在Firefox中是我想要的,但在Chrome中,无论何时我在控制台上记录成功的数据,顺序总是一样的,尽管控制台指示我的API响应的顺序是正确的。
我错过了什么?我不知道这是缓存问题,还是我只是忽略了javascript中的某些内容。
Object
属性顺序在JavaScript中不受保证。您宁愿将Array
用于
将json格式化为如下所示:
{"data":[{"id":"3","name":"whatever","color":"blue"},{"id":"2","name":"That","color":"red"},{"id":"1","name":"This","color":"blue"}]}