JSON对象通过jQuery发布到php

Phi*_* LA 4 javascript php jquery json object

我知道,那里有很多问题,但没有一个问题适合我.

我在javascript中使用普通的javascript对象构建一个数组,并将其发送jquery.post到服务器.但是在服务器上,我无法使用访问数据php $obj->value.我试过json_decode/encode等等.

这是console.log(data)在将它发送到服务器之前给我的.

在此输入图像描述

比在PHP部分我只做这个:

 $data= $_POST['data'];
 print_r($data);
Run Code Online (Sandbox Code Playgroud)

print_r的输出是:

在此输入图像描述

这就是我的Jquery帖子的样子:

    $.post("programm_eintragen.php",{
            data: data,

        }).success(
            function(data){                 
                    //success

        }).error(
            function(){
            console.log("Error post ajax " );
        },'json');      
Run Code Online (Sandbox Code Playgroud)

有人能告诉我:

我如何才能正确访问php网站上的对象属性?

我也得到tried to access non object ....或PHP将json对象解释为字符串并data[0]返回我 [.

我想,我可以这样做:

$data[0]->uebungen[0] 
Run Code Online (Sandbox Code Playgroud)

我只是愚蠢而失踪的东西?

为什么整个json发送到php这样的问题?

Rya*_*yan 10

在JavaScript中,您实际上并没有发送JSON编码的字符串,而只是发送表单数据.要实际发送JSON字符串,您需要将其(对象)转换为字符串.

$.post("programm_eintragen.php",{
  data: JSON.stringify(data),
});
Run Code Online (Sandbox Code Playgroud)

在接收方(php脚本),您将拥有一个JSON字符串.你可以解码它.

$data = json_decode($_POST['data'], true);

var_dump($data[0]['uebungen'][0]);
Run Code Online (Sandbox Code Playgroud)

但是,这些步骤不是必需的.只需直接访问数组即可避免所有json_encoding.对于此示例,请忽略上述javascript,并且不要更改代码中的任何内容.

$data = $_POST['data'];
var_dump($data[0]['uebungen'][0]);
Run Code Online (Sandbox Code Playgroud)