我不禁要问,因为还有许多与此主题相关的帖子(例如one和two),但是这些帖子中的解决方案似乎都不适合我.
我正在尝试将JSON编码的对象从页面传递到PHP控制器,然后以一些信息进行响应.
如果我在Firebug中观看,我可以看到在“ Post”选项卡下发送了对象,但是当我打印$_GET,$_ POST和$_REQUEST数组时,关于json对象什么也没看到. $_GET数组至少显示我的’update-player’查询字符串,但是POST为空,REQUEST仅显示我拥有的一些本地cookie.
这是我的jQuery代码.如您所见,我目前正在对JSON进行硬编码,目的是我将拥有一个jQuery方法来更新本地对象.
function sendPlayerUpdate(row, col) {
var playerinfo = [
{
"id": 1,
"row": row,
"col": col
}
];
alert(playerinfo[0].id); //debugging
$.ajax({
type: 'POST',
url:"controller.php?a=update-player",
//data: $.toJSON(playerinfo[0],
data: { json: JSON.stringify(playerinfo) },
contentType: "application/json",
success: function (){
},
dataType: 'json'
});
};
我对应的处理请求的PHP代码:
// update player information from AJAX POST
case "update-player":
if (isset($_POST['json'])) echo "json received\n\n";
else echo "json not received\n\n";
echo "GET VARIABLES\n";
print_r($_GET);
echo "\n\nPOST VARIABLES\n";
print_r($_POST);
echo "\n\nREQUEST VARIABLES\n";
print_r($_REQUEST);
而且,我在Firebug中看到的是:
json未收到
GET VARIABLES
Array
(
[a] => update-player
)
POST VARIABLES
Array
(
)
REQUEST VARIABLES
Array
(
[a] => update-player
(local cookies)
)
解决方法:
尝试在PHP中进行如下操作(当请求是一个应用程序/ json时,则不会将数据放入$_POST)
var_dump(json_decode(file_get_contents("php://input")));
标签:php,jquery,post
来源: https://codeday.me/bug/20191012/1899855.html