1
JavaScript代码发送的数据:PHP无法读取jQuery.ajax POST
var data = {"hiSO": "my very complex - nested objects/arrays - data object"};
var j = jQuery.noConflict();
j.ajax({
type: "POST",
url: "postTestingResult.php",
contentType: "application/json; charset=utf-8",
data: {"data": JSON.stringify(data)},
dataType: "json",
success: ajaxSuccess,
error: ajaxError
});
PHP代码:
header('Content-Type: application/json');
if(!empty($_POST['data'])) {
$data = json_decode($_POST['data']);
//do things with data
echo json_encode(array("success" => "thanks for the info!"));
} else {
echo json_encode(array("error" => "'data' is not set or is NULL"));
}
无论我如何组织数据,$ _ POST [ '数据' ]似乎总是空的(具体来说,未定义)。如果您需要我正在使用的数据对象的完整副本,请查看this JSFiddle。感谢帮助,谢谢!
谢谢!我不确定我会永远那样!我编辑我的问题,包括var j = jQuery.noConflict();以消除对他人的困惑。 –
作为后续问题,我有什么理由不应该将它作为JSON发送?我可以简单地发送它吗?我一直认为它必须采用某种格式,JSON和XML是两种最流行的格式。 –
@MatthewHerbst:您必须以* some *格式发送数据。 *发送*到服务器的最流行的格式是URI编码(技术上,'application/x-www-form-urlencoded; charset = UTF-8'),这就是你在外层使用的POST包含一个URI编码的字段“data”;该字段的值是一个JSON字符串)。从服务器发送数据到客户端的流行格式是JSON和XML。为了将复杂的数据发送到服务器,JSON-over-URI编码(你所做的)看起来很好,我过去也用过它。 –