contentType为“application/json”的Ajax调用不起作用

我有一个ajax调用,它将表单数据发送到php函数。因为我读了很多关于使用contentType:'application/json'是最佳实践的文章,所以我也想尝试一下。但不幸的是,我的脚本在使用时没有返回任何内容。如果我删除它,脚本将执行它应该执行的操作

你知道原因是什么吗?为什么?谢谢大家!

$('#表单')。提交(函数(e){
e、 预防默认值();
var content=$(this).serialize()+“&ajax=1”;
$.ajax('app/class/controller/contactForm.php'{
类型:“POST”,
//contentType:'应用程序/json',
数据类型:“json”,
数据:内容,
成功:功能(结果){
控制台日志(结果);
}
});
})

还有我的PHP:

if(isset($\u POST['ajax'])和&$\u POST['ajax']='1'){
echo json_编码(validateForm($_POST));
}

使用contentType:'application/json'时,您将无法依赖正在填充的$\u POST$\u POST仅为表单编码的内容类型填充

因此,您需要从PHP原始输入中读取数据,如下所示:

$input=file\u get\u contents('php://input');
$object=json_decode($input);

当然,如果您想发送application/json,您应该实际发送json,但您没有这样做。您要么需要将对象序列化直接构建为JSON,要么需要执行类似的操作—使用jQuery将表单数据转换为JavaScript对象—从表单序列化对象

老实说,在您的例子中,因为您处理的是表单数据,所以我认为使用application/json的用例并不存在

发表评论