我有一个问题.
使用ajax我发送了一个正确形成的JSON对象:
$.ajax({
type: "POST",
url: SITE_URL+'/data.php',
dataType: "json",
data: { ajax: 1 },
success: function(data) {
console.log(data);
}
});
Run Code Online (Sandbox Code Playgroud)
但是,Opera和Chrome虽然接收到相同的对象,但是按不正确的顺序打印出对象,看起来它们都按ID号排序,而不是单独留下它!
有没有办法停止这种自动排序?
编辑后,发现它是按索引号排序我认为最好的方法可能是不使用索引来存储object_id,而是存储我想要按顺序排序的id号.
但是,我仍然想知道是否有办法停止排序.
谢谢
Edit2,我只想指出,我将采用不同的方式来做这件事,因为我觉得我用这种方法滥用对象.但是,我仍然想了解为什么Opera和Chrome认为他们有权更改我的对象ID的顺序:
问题是我试图节省处理能力,假设我们有人有ID,
1.John,2.Frank和3.Sally.然而,这些人中的每一个都具有高度属性集(和其他东西).1.约翰.180,2.Frank.220,3.Sally.150.为了节省处理费用,我要求人们根据他们的身高对结果进行排序,这样我就得到了一个包含其他属性的2,1,3的数组.我JSON这个数组并将其发送到浏览器.
现在,FF将保留新的顺序People [1]仍然是John,但在For n as person循环中,它们将会出现故障.
如果我无法解决这个问题,我将不得不在SQL阶段进行排序,并在JS阶段添加额外的循环和排序,尽管我想避免对浏览器施加更多压力,因为它已经是Js重页.
非常感谢
我在PHP中有一个多维数组:
Array
(
[1] => Array
(
[19] => Array
(
[type] => 2
)
[6] => Array
(
[type] => 4
)
[12] => Array
(
[type] => 3
)
)
)
Run Code Online (Sandbox Code Playgroud)
当我通过javascript json_encode这个数组:
var jsonArray = <?php echo json_encode($above_array); ?>;
Run Code Online (Sandbox Code Playgroud)
我得到:
Object
(
[1] => Object
(
[6] => Object
(
[type] => 2
)
[12] => Object
(
[type] => 4
)
[19] => Object
(
[type] => 3
)
)
)
Run Code Online (Sandbox Code Playgroud)
我希望保留第一个订单而不是第二个订单.
当我尝试执行asort($data)然后返回它时response()->json($data, 200),输出仍处于原始位置。
这是代码:
$fruits = array( 'guava', 'apple', 'orange' );
asort( $fruits );
return response()->json( $fruits, 200 );
Run Code Online (Sandbox Code Playgroud)
那么输出仍处于其位置。
{
0: "guava",
1: "apple",
2: "orange"
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在排序发生后转储数据时,就像
$fruits = array( 'guava', 'apple', 'orange' );
asort( $fruits );
dd( $fruits );
Run Code Online (Sandbox Code Playgroud)
我得到了正确的数据位置。
array:3 [
1 => "apple"
0 => "guava"
2 => "orange"
]
Run Code Online (Sandbox Code Playgroud)
知道吗,为什么会发生这种情况?我该如何解决这个问题?我使用Laravel 5.1