Php 在客户端遍历时,AJAX服务器响应中发送的数组元素的顺序似乎发生了变化
我已从服务器端返回以下json响应-Php 在客户端遍历时,AJAX服务器响应中发送的数组元素的顺序似乎发生了变化,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我已从服务器端返回以下json响应- echo json_encode(array("result"=>"success", "networks" => $adNetworkListFinal)); 其中,$adNetworkListFinal具有以下值: Array ( [-3] => Native Test [143] => conf native template [142] => test native ) 注-索引-3是第一个。
echo json_encode(array("result"=>"success", "networks" => $adNetworkListFinal));
其中,$adNetworkListFinal具有以下值:
Array
(
[-3] => Native Test
[143] => conf native template
[142] => test native
)
注-索引-3是第一个。是的,它是一个负整数索引,我必须在这里使用它
但是,在客户端,当我使用.each()遍历响应时,我得到了索引为-3
的项,最后-
代码
$.ajax({
type: "POST",
url: posturl,
data : data,
dataType: "json",
async: false,
success: function(msg){
if (msg.result == "success")
{
$.each(msg.networks,function(key,val)
{
console.log("check "+key);
});
}
});
输出
check 142
check 143
check -3
我不确定是什么导致了顺序的变化(最终访问了索引项-3),以及如何修复它。数组不能有负索引,因此您正在创建一个JSON对象(因此也是一个JavaScript对象) JSON和JavaScript对象是无序的,因此您可以按照JS引擎希望存储它们的任何顺序获取属性
由于值是数字的,您可以将它们拉入数组(作为值,而不是索引),并在使用它们访问原始对象的值之前对它们进行排序。由于我的数组可能还包含索引-1(需要显示在末尾):D,我知道它是脏的。因此,在客户端排序在这里不是一个选项。但是你的回答在我脑海中点击了另一种方法——我认为在AJAX响应中传递另一个具有所需索引顺序(作为数组值)的数组可以解决这个问题。在客户端,我将引用这个数组来遍历原始数组。