为什么我无法将表单中的数据发送到phps cript?
我的js文件:
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);
答案 0 :(得分:2)
不要在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_get_contents('php://input');
的内容来读取原始输入数据,然后json_decode($rawData);
可以使用。