抱歉英语不好:)
我试图以json格式发布用于在php / python中编写的restapi的表单。如果我使用json,我无法访问发布的数据。请参阅下面的方案
非json帖子的代码
jQuery(document).ready(function($) {
$.post(
"http://localhost:8000/api/v1/entry/?format=json",
{
"body": "This will prbbly be my lst edited post.",
"pub_date": "2011-05-22T00:46:38",
"slug": "another-post",
"title": "Another Post",
"username":"admin",
"password":"admin"
},
function(responseText){
$("#result").html(responseText);
},
"html"
);
})
服务器响应
Array
(
[body] => This will prbbly be my lst edited post.
[pub_date] => 2011-05-22T00:46:38
[slug] => another-post
[title] => Another Post
[username] => admin
[password] => admin
)
Json Post的代码
jQuery(document).ready(function($) {
var data = JSON.stringify({
"body": "This will prbbly be my lst edited post.",
"pub_date": "2011-05-22T00:46:38",
"slug": "another-post",
"title": "Another Post",
"username":"admin",
"password":"admin"
});
$.post(
"testpost.php",
data,
function(responseText){
$("#result").html(responseText);
},
"html"
);
})
服务器响应
Array
(
)
答案 0 :(得分:3)
好吧,你没有将值赋给任何参数,因此PHP将无法填充$_POST
数组。
将其分配给参数,例如json
:
$.post("testpost.php", {json: data}, ...);
然后您将能够通过以下方式访问它:
$_POST['json'];
或者,如果您使用PECL,则可以致电http_get_request_body
[docs]获取数据。
答案 1 :(得分:1)
这是正常响应,数据必须是键值对的数组/对象或正确编码的查询字符串,类似于key = value& key2 = value2 ... 如果你想像服务器那样获得发布的数据,你应该自己阅读输入:
$jsonDatas = file_get_contents('php://input')
您可以在js中轻松完成:
data = { json: JSON.stringify({...}) }
然后在$ _POST ['json']服务器端获得结果。
如果你想要,你可以查看我的一个类,以帮助你在这里使用php服务器端json服务:http://projects.jgotti.net/blog/15