【问题标题】:PHP POST method json_decode return NULLPHP POST 方法 json_decode 返回 NULL
【发布时间】:2014-11-01 19:49:32
【问题描述】:

我正在使用 sencha touch 并将数据发送到 php REST 服务器以将其保存到数据库中,在 firebug 中我可以看到 sencha touch 发送到 php 端的参数,但在 php 中我有以下代码:

parse_str(file_get_contents("php://input"),$post_vars);
$info=$post_vars['customers'];
$data=json_decode(stripslashes($info),true);

json_decode 返回 NULL,get_magic_quotes_gpc 关闭我也尝试了 utf8_encode,但总是得到 NULL,我尝试了 var_dump,在响应中我得到了额外的文本:

    array(1) {
     ["customers"]=>
     string(50) "{"c_name":"test","c_tel":"08-05852821","id":"112"}"
    }

我不知道如何继续,在帖子包含的 var_dump 之前:

{"success":{"customers":"{\"c_name\":\"test\",\"c_tel\":\"08-05852821\",\"id\":\"112\"}"}}

我尝试了stripslashes,但我也得到了NULL...

任何想法...

【问题讨论】:

  • 如果方法是 GET,你能做一个var_dump($_POST);var_dump($_GET) 吗?这可能使您可以直接访问所需的内容。
  • 我得到了这个 var_dump($_POST): array(1) {["customers"]=>string(50) "{"c_name":"test","c_tel":"08- 05852821","id":"112"}" }
  • 如何访问“c_name”?

标签: php json extjs


【解决方案1】:

根据您的评论,我会直接访问$_POST

$info = json_decode($_POST['customers'], true);
echo $info['c_name'];

【讨论】:

  • 工作!!!但在我在谷歌的所有搜索中,我都看到了 file_get_contents("php://input") 的使用。
  • 我真的很想了解问题和解决方案,我正在按照教程一步一步做 php REST 服务器端,他们使用 file_get_contents("php://input") ?!
  • @user2005049 令人惊讶的是,当您使用 ajax 发布表单或键值对时,使用 $_POST$_GET 的全局变量几乎总是访问数据的最简单方法,参见例如php.net/manual/en/tutorial.forms.php
【解决方案2】:

Jason 的传播方式有三种可能。

  • 首先,它可以是带有名称 (index.php?data={success:true}) 的 get 变量,这仅适用于短 json 字符串。
  • 其次,它可以是一个带有名称的帖子变量(将作为x-www-form-urlencoded发送)
  • 第三,您只能发布 json(Store.sync 可以)

只有后者将通过php://Input 访问,看来您使用的是第二个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 2018-05-27
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多