从ajax接收数据到php不需要';行不通
为什么我不能将表单中的数据发送到phps脚本 我的js文件:从ajax接收数据到php不需要';行不通,php,jquery,ajax,Php,Jquery,Ajax,为什么我不能将表单中的数据发送到phps脚本 我的js文件: var newMessage = { 'name': nameInput.val(), 'email': emailInput.val(), 'message': msgInput.val() } $.ajax({ type: 'POST',
var newMessage = {
'name': nameInput.val(),
'email': emailInput.val(),
'message': msgInput.val()
}
$.ajax({
type: 'POST',
url: 'contact.php',
data: JSON.stringify(newMessage)
}).done(function(res){
console.log(res);
}).fail(function(err){
//console.log(err);
});
和我的php文件:
<?php
$data = $_POST['data'];
json_decode($data);
$name = json_decode($_POST['name']);
echo ($name);
不要在javascript中的对象上使用JSON.stringify
。JQuery将为您处理数据的转换。只需将对象传递给数据键,如下所示:
var newMessage = {
'name': nameInput.val(),
'email': emailInput.val(),
'message': msgInput.val()
}
$.ajax({
type: 'POST',
url: 'contact.php',
data: newMessage
}).done(function(res){
console.log(res);
}).fail(function(err){
//console.log(err);
});
按照您的方式,您正在以json格式发送原始有效负载数据,而预期的格式类似于查询字符串。JQuery将为您将其转换为正确的格式。或者,如果您真的想发送这样的原始json数据(这里没有好处),那么您可以使用类似于$rawData=file\u get\u contents('php://input');
读取原始输入数据,然后可以json\u解码($rawData)
第二行试试这个$data=json\u decode($\u POST['data'])$name=$data->name代码>不幸的是,ajax响应是空的,无法通过执行var\u dump($\u POST)之类的操作进行调试代码>变量转储给我数组(1){[“{”名称“:“vgfgfd”,“email”:”gdfdgf@dsasd“,”message“:“dasdsa”}”]=>string(0)“}
我建议您使用xdebug,将其在第一行中打断并检查变量。