我使用以下代码向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
它