JSON对象通过jQuery发布到php

时间:2014-07-13 11:08:38

标签: javascript php jquery json object

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

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

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

enter image description here

比php部分我只这样做:

 $data= $_POST['data'];
 print_r($data);

print_r的输出是:

enter image description here

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

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

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

        }).error(
            function(){
            console.log("Error post ajax " );
        },'json');      

有人可以告诉我:

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

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

我想,我可以这样做:

$data[0]->uebungen[0] 

我只是愚蠢而且缺少某些东西吗?

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

2 个答案:

答案 0 :(得分:10)

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

$.post("programm_eintragen.php",{
  data: JSON.stringify(data),
});

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

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

var_dump($data[0]['uebungen'][0]);

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

$data = $_POST['data'];
var_dump($data[0]['uebungen'][0]);

example

答案 1 :(得分:0)

我就是这样做的:

<强>的JavaScript

var data_obj = {
    "function": "create_customer",
};
$.post({ url: "src/index.php", dataType: "json", data: data_obj }, function (data) {

});

<强> PHP

$json_obj = json_decode(json_encode($_POST));
$function = $json_obj->{"function"};

网址是相对于index.html的路径。