相关疑难解决方法(0)

你如何通过Index ASC阻止Chrome和Opera对JSON对象进行排序?

我有一个问题.

使用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重页.

非常感谢

jquery opera json google-chrome

61
推荐指数
6
解决办法
4万
查看次数

json_encode不保留顺序

我在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)

我希望保留第一个订单而不是第二个订单.

javascript php json

15
推荐指数
3
解决办法
1万
查看次数

排序在 laravel http 响应中不起作用

当我尝试执行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

php sorting laravel-5

5
推荐指数
1
解决办法
3077
查看次数

标签 统计

json ×2

php ×2

google-chrome ×1

javascript ×1

jquery ×1

laravel-5 ×1

opera ×1

sorting ×1