Mat*_*bst 1 javascript php jquery json stringify
JavaScript代码:
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
});
Run Code Online (Sandbox Code Playgroud)
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"));
}
Run Code Online (Sandbox Code Playgroud)
无论我如何构造数据,$ _POST ['data']似乎总是空的(具体来说,未定义).如果你想要我正在使用的数据对象的完整副本,请查看这个JSFiddle.感谢您的帮助,谢谢!
您告诉服务器您正在发送JSON(via contentType: "application/json; charset=utf-8"),但是您没有发送JSON,而是发送了URI编码的数据.这是因为你给了jQuery一个对象data选项(一个具有一个属性的对象,其值是一个JSON字符串).
您的PHP代码需要URI编码的数据,因此要修复它只需删除该contentType选项,以便jQuery使用其默认值.
如果你真的想要发送JSON(这需要更改你的PHP),请更改
data: {"data": JSON.stringify(data)},
Run Code Online (Sandbox Code Playgroud)
至
data: JSON.stringify(data),
Run Code Online (Sandbox Code Playgroud)
要么
data: JSON.stringify({data: data}),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
975 次 |
| 最近记录: |