为什么如果我使用Postman,我不需要包含if ($_POST) { '' } else { $_POST = json_decode(file_get_contents('php://input'), true);}
它的工作方式不同,如果我是从AJAX发送它,但为什么?
为什么Postman不要求json_decode(file_get_contents('php://input'), true);
Ajax代码
$.ajax({
url: "http://localhost/WEP/RESTAPI/php.php?api",
type: "POST",
data: JSON.stringify(data),
contentType: "application/json",
success: function(data) {
window.alert("Friend added! "+$name.val()+' '+$email.val());
},
error: function() {
alert("Error");
}
});
PHP
elseif ($srequest == 'POST'){
if ($_POST) {
'';
} else {
$_POST = json_decode(file_get_contents('php://input'), true);
}
$id = $_POST['id'];
$name = $_POST['name'];
$email = $_POST['email'];
//...mysqli connect,query
答案 0 :(得分:0)
您的Ajax已编写为发送带有JSON编码正文的POST请求。
使用Postman时,必须将其配置为使用multipart或www-url编码的正文。
PHP将使用这些格式自动解码请求主体。
答案 1 :(得分:0)
Postman做了一些其他事情,然后是一个AJAX帖子。一个用application/x-www-form-urlencoded
发布你的经典html表单,另一个用不同的内容类型发布直接的json。
bottomline:php $_POST
变量不包含你发送的每个POST http请求!
另见这里,这是一个很好的解释:PHP "php://input" vs $_POST