简体   繁体   English

$ .ajax从php获得json_encode($ arr)之后的对象,但是如何在jQuery中获取键和值?

[英]$.ajax get an object after json_encode($arr) from php, but how to get key and value in jQuery?

1 1个

In PHP: 在PHP中:

$arr = array( 10=>"ten", 5=>"five", 2=>"two"); return json_encode($arr);

In JS - $.ajax(): 在JS中-$ .ajax():

success: function(data){ console.log(data);}

2 2

What I see in console is : 我在控制台中看到的是:

Object {2: "two", 5: "five", 10: "ten"} , Object {2: "two", 5: "five", 10: "ten"}

I want to use for(var i=0; i< data.length,i++) but failed. 我想使用for(var i=0; i< data.length,i++)但失败了。

Finally it works in this way : for(var i in data) 最终它以这种方式工作: for(var i in data)

3 3

My Question: Why the array is sorted? 我的问题:为什么对数组排序? I want the array to keep unsorted. 我希望数组保持未排序状态。

Anyone helps me? 有人帮我吗?

JSON cannot represent a sparse array, which is what your data would be if it did. JSON不能表示稀疏数组,这就是您的数据将是的情况。
So you get an object instead of an array and the is no standard that says object properties has to sorted in any specific way or not sorted at all. 因此,您获得的是对象而不是数组,并且没有标准说对象属性必须以任何特定方式进行排序或根本不进行排序。
You can try having your data in 2 arrays 您可以尝试将数据分成2个数组

$arr = array( 'indecies'=>array(10,5,2), 'values'=>array("ten","five","two") ); 
return json_encode($arr);
for(var i=0; i< data.indecies.length,i++){
    // do something with
    //data.indecies[i]
    //data.values[i]
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM