我只是做一個簡單的職位,但由於某種原因,不管我做什麼,我不能讀取JSON數據苗條框架發送和recieving 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)一個相關的問題:
如果我是通過 $userid = $app->request->params('username');
它完美的作品通過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,但我的問題是,我認爲當我們做POST時,數據通過Body而不是頭部發送。當我做jquery.post時,我可以通過應用程序的請求來接收它 - > params
編輯:
好的我解決了這個問題。即使您將內容類型指定爲Json,結果也一樣。這並不意味着它會將數據轉換爲JSON。我必須對數據執行JSON.stringify。
但任何人都可以幫我解決第二個問題嗎?
當你說,「我得到一個錯誤」你得到什麼樣的錯誤? – dgig
500內部服務器錯誤。我用螢火蟲檢查,並給了我很長的迴應,但我認爲關鍵是「非法字符串偏移'用戶名'」我應該在這裏粘貼整個事情? – user308553
對於第二個問題,我認爲這就是SLIM的工作方式。這是易用性的一部分,該請求對象包含POST或GET數據,而無需擔心太多。有點像PHP的$ _REQUEST變量。 – dgig