【问题标题】:Posting JSON to PHP script将 JSON 发布到 PHP 脚本
【发布时间】:2012-08-28 06:42:14
【问题描述】:

我在尝试将 JSONjavascript 发送到 PHP 脚本时遇到了很长时间:发送很好(我可以在提琴手中看到 JSON)但我在 @ 中什么也没收到987654325@:

javascript:

var person = {
  name: 'yoel',
  age: 28
};
xmlhttp.open("POST","http://localhost:8888/statisticsdb.php",true);
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send(JSON.stringify(person));   

php

echo 'trying to print ' . var_dump($_POST["name"]);

我显然希望看到一些东西,但 var_dump 什么也没返回。非常感谢您的帮助!

【问题讨论】:

  • 你可以使用 jQuery,它有一个非常简单的 $.post() 方法,你可以简单地将 JSON 对象作为参数传递: $.post('URL',person,success:function() )

标签: php javascript json post


【解决方案1】:

添加这个:

xmlhttp.setRequestHeader("Content-length", JSON.stringify(person).length);

【讨论】:

  • 我认为这不能解决问题 - 也已经有一个公认的解决方案。
【解决方案2】:

$_POST 保存从具有Content-Type application/x-www-form-urlencoded 的请求中解码的值,即它解析:

param1=value1&param2=value2

进入:

array( 'param1' => 'value1', 'param2' => 'value2')

如果你以json格式发送数据,你必须从raw php inputjson_decode它:

$input = file_get_contents('php://input');
$jsonData = json_decode($input);

您将拥有一个 PHP 对象,其中填充了您的 json 内容。

【讨论】:

    【解决方案3】:

    尝试:

    $data = json_decode(file_get_contents('php://input'));
    var_dump($data->name);
    

    原因是,您的 POST 请求的正文是:

    {"name":"yoel","age":28}
    

    不过,php 期望类似 (ref):

    name=yoel&age=28
    

    无法正确解析 json 字符串,因此$_POST 将为空。

    【讨论】:

    • 感谢您快速而有帮助的回复,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2015-07-25
    • 2020-05-30
    • 2011-06-13
    • 1970-01-01
    • 2017-04-27
    • 2017-06-14
    • 2013-09-04
    相关资源
    最近更新 更多