【发布时间】:2014-04-27 12:22:28
【问题描述】:
我有一个在 JavaScript 中“字符串化”的 JSON 对象,我想发布到服务器。
我正在使用仅打印$_POST 数组的简单PHP 脚本对此进行测试。不幸的是,它总是空的。我错过了什么?
myJsonFile.json
{"glossary":{"title":"example glossary","GlossDiv":{"title":"S","GlossList":{"GlossEntry":{"ID":"SGML","SortAs":"SGML","GlossTerm":"Standard Generalized Markup Language","Acronym":"SGML","Abbrev":"ISO 8879:1986","GlossDef":{"para":"A meta-markup language, used to create markup languages such as DocBook.","GlossSeeAlso":["GML","XML"]},"GlossSee":"markup"}}}}}
post-json.js
$.get('myJsonFile.json',function(myJsonString) {
// other stuff happens here, I promise :)
console.log(myJsonString); // looks like a nicely formed json object to me
$.ajax({
type: 'POST',
url: 'view-json.php',
data: {json: JSON.stringify(myJsonString)},
success: function(data) {
// success message
},
dataType: 'json', // These are the offending lines. Remove.
contentType: 'application/json' // Thanks A.Wolff!
});
},'json');
view-json.php // 总是空数组
<?php print_r($_POST); ?>
【问题讨论】:
-
如何检查
$_POST是否为空? -
好问题,我正在使用 Google Chrome 开发人员工具,检查“网络”选项卡,单击 post-json.php 条目并查看响应。在标头中,我可以看到请求有效负载显示 json 对象已发送:
json=%7B%221%22%3A%7B%22id%22%3A1%2C%22...,但响应始终为:Array()。另外,我的成功信息显示,嗯,成功了。 -
至少尝试删除
dataType: 'json'(你在这里没有返回json,所以内部解析会抛出错误)和内部成功回调使用console.log(data); -
也尝试删除
contentType -
谢谢。
dataType已删除,console.log(data)已添加。 Console.log(data) 也返回Array()。
标签: javascript jquery ajax json