Chrome中的Jquery Ajax请求有什么问题


What is wrong with this Jquery Ajax request in Chrome?

我正在使用以下代码向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"}]}