【问题标题】:JSON object via jQuery post to phpJSON对象通过jQuery post到php
【发布时间】:2014-09-03 12:18:25
【问题描述】:

我知道,有很多问题,但没有一个对我有用。

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

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

比 php 部分我只这样做:

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

print_r 的输出是:

这就是我的 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 会出现这样的问题?

【问题讨论】:

  • 您的 JS 不会将 JSON 发布到您的 PHP 代码,它会发布一个数组。看起来这在 POST 期间被转换为字符串文字,这就是 print_r($data) 显示的内容(注意输出周围的 ")。

标签: javascript php jquery json object


【解决方案1】:

在 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

【讨论】:

    【解决方案2】:

    这就是我的做法:

    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"};
    

    URL 是相对于index.html 的路径。

    【讨论】:

      猜你喜欢
      • 2015-06-14
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 2014-05-20
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 2019-01-06
      相关资源
      最近更新 更多