如何在PHP中接收JSON对象?

如何在PHP中接收JSON对象?,php,javascript,jquery,ajax,json,Php,Javascript,Jquery,Ajax,Json,我正在尝试从AJAX请求向服务器发送JSON对象 我用JQuery这样做: $.ajax({ type: "POST", url: settings.ajax.post, dataType: 'json', data: basket.aggregate(Basket.EXPORT_JSON, qty), success: function(data, textStatus, jqXHR) { if (typeof settings.ajax

我正在尝试从AJAX请求向服务器发送JSON对象

我用JQuery这样做:

  $.ajax({
    type: "POST",
    url: settings.ajax.post,
    dataType: 'json',
    data: basket.aggregate(Basket.EXPORT_JSON, qty),
    success: function(data, textStatus, jqXHR) {
      if (typeof settings.ajax.success == "function") settings.ajax.success(data, textStatus, jqXHR);
    },
    error: function(jqXHR, text, e) {
      if (typeof settings.ajax.error == "function") settings.ajax.error(jqXHR, text, e);
    }
  });
url指向服务器上的此文件:

<?php

$to = "<my-email-address>";
$subject = "JSON test";
$message = "POST dump:\n\n";

foreach($_POST as $key=>$value)
    {
        $message .= $key . ":" . $value;
    }

mail ($to, $subject, $message);

exit;
?>

但是POST变量似乎是空的,即使在Firebug中我可以看到正确的数据被发送到了服务器:

<?php

$to = "<my-email-address>";
$subject = "JSON test";
$message = "POST dump:\n\n";

foreach($_POST as $key=>$value)
    {
        $message .= $key . ":" . $value;
    }

mail ($to, $subject, $message);

exit;
?>


发送每个请求后,都会调用ajax error函数,其中有一个未定义的错误(我猜是因为服务器没有回复?或者我不知道?)

POST需要键值对,但您只发送一个值(一个JSON字符串),而没有键。它需要是一个数组


其次,在PHP中将JSON用作数组或对象之前,需要对其进行解码
json\u decode()
用于此目的。

什么是
var\u转储($\u POST)输出?空数组@shaquitrifonoff看看这篇文章,你可以使用
.load
发送数据。我想如果
ajax
不起作用,那么
load
可能会起作用?@Ozzy很高兴你得到了答案。当然,他忘了参数。但是,FF还是发送了一个字符串,难道不能用PHP访问吗?@Bergi好吧,我认为不值得回答这个问题,我只是将
数据
参数改为
数据:{json:basket.aggregate(…)}
,我现在得到了json字符串:)@Bergi-作为记录,因为他只提交了一个字符串,它被视为键值对的键。他可以通过检查数组\u键($\u POST)来访问它,该数组将包含字符串(在带有任何其他POST键的数组中)。@ozy回调中的错误可能是因为脚本没有发送任何头,对于有效的HTTP响应,它们被评估为过早退出。或者,您可以简单地将标头精确地设置为200 ok<代码>标题('HTTP/1.1200 OK')