我尝试从ajax向PHP发送HTTP POST请求,但是我有一个语法错误,我不明白.. 有没有人可以帮助我?
的index.php
var key = "keytest";
$.ajax({
url: 'requests.php',
type: 'post',
contentType: 'application/json',
dataType: 'json',
data: '{"uniqueKey" : '+key+'}',
success:function( rep ) {
$('#content').html(rep.content);
},
error:function(a,b,err){
console.log(err);
}
});
requests.php
header('Content-type: application/json');
$uniqueKey = filter_input(INPUT_POST, 'uniqueKey');
$key = "newKey";
$retour = array('key' => $key);
echo json_encode($retour);
答案 0 :(得分:0)
不要手动构建JSON,请使用JSON.stringify
data: JSON.stringify({uniqueKey: key}),
当请求正文为JSON时,Php不会填充$_POST
(INPUT_POST),仅适用于application/x-www-form-urlencoded
或multipart/form-data
要获得json,您必须从php://input
$json = file_get_contents('php://input');
$obj = json_decode($json);
$uniqueKey = $obj->uniqueKey;
此外,您的代码仅响应key
值,但ajax请求需要content
值。您应该将dataType更改为文本,以查看是否恢复了您的期望。
$.ajax({
url: 'requests.php',
type: 'post',
contentType: 'application/json',
dataType: 'text',
data: JSON.stringify({uniqueKey: key}),
success:function( rep ) {
$('#content').html(rep);
},
error:function(a,b,err){
console.log(err);
}
});