我只是做一个简单的POST,但出于某种原因无论我做什么,我都无法读取JSON数据
$.ajax({
url: 'server/account/session',
type: 'POST',
data: { "username": name, "password": password} ,
contentType: 'application/json; charset=utf-8',
dataType: "json",
success: function (data) {
sessionStorage.accessToken = data["token"];
sessionStorage.userid = data["userid"];
alert ( sessionStorage.accessToken );
},
error: function () {
}
});
data: {"username": "chips", "password": "potato"}
我的php:
$result = json_decode($app->request->getBody(), true);
var_dump($result);
会导致NULL。我不知道为什么它会返回NULL,我发送了一个json,然后将它解码为php。数组,不是我在做什么?
问题二: 2)一个相关的问题:
如果我通过jquery.post发送
jQuery.post("server/account/session", { "username": name, "password": password}, function(data){
var result = JSON.parse(data);
sessionStorage.accessToken = result["token"];
sessionStorage.userid = result["userid"];
alert ( sessionStorage.accessToken );
});
并在php中接收它
$userid = $app->request->params('username');
它完美无缺,但我的问题是,我认为当我们进行POST时,数据是通过Body而不是标头发送的。怎么样,当我做jquery.post时,我可以通过应用程序的请求接收它 - > params ??
编辑:
好的,我解决了这个问题。即使您将内容类型指定为Json,也会结果。它并不意味着它会将数据转换为JSON。我不得不对数据做JSON.stringify。
但第二个问题可以帮助我吗?
答案 0 :(得分:0)
回答问题2;当您使用正确的方法时,您根本不需要JSON.stringify():
var data = {
username: user,
password: pass
};
$.ajax({
dataType: 'json',
method: 'POST',
url: 'server/account/session',
data: data,
success: function (data) {
console.log(data);
}
})
.always(function () {
$('body')
.removeClass('loading');
});
这应该生成一个正确的JSON-Request,它通常会被php自动解析为$ _POST,$ _REQUEST,也可以被Slim理解。