如何在PHP中接收JSON对象?
我正在尝试从AJAX请求向服务器发送JSON对象 我用JQuery这样做:如何在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({
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')