我使用ajax post从jquery发送json对象,我想使用php解析它并发送回相同的对象。该帖子成功,因此我的对象要去那里,但我没有得到适当的回复。我从 html 表单发送名字和姓氏,但我得到的响应 json 对象在我的控制台中是:-
response : [object Object]
当我尝试在浏览器中查看 php 端时,我收到如下错误:-
<br />
<b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\jsonTest\process.php</b> on line <b>8</b><br />
<br />
<b>Notice</b>: Trying to get property of non-object in <b>C:\xampp\htdocs\jsonTest\process.php</b> on line <b>9</b><br />
{"firstname":null,"lastname":null}
我在 stackoverflow 上看到过有关上述错误的帖子,但情况与我的不同。我确实从 jquery 端发送 json 对象,所以我不知道为什么我会收到此错误。在“网络”控制台中我可以看到它成功发送了 json 对象。
这是我的 jquery 部分:-
$("#userDataForm").submit(function(e){
e.preventDefault();
var formData={
fname:$("#fname").val(),
lname:$("#lname").val()
};
$.ajax({
type:'post',
url:'process.php',
dataType:'json',
data:JSON.stringify(formData),
contentType: "application/json",
success:function(response){
var response= $.trim(response);
console.log("response : "+response);
}
});
});
这是我正在使用的 html 表单:
<form id="userDataForm">
<input type="text" placeholder="Firstname" name="fname" id="fname" />
<input type="text" placeholder="Lastname" name="lname" id="lname" />
<input type="submit" value="submit" name="submit">
</form>
这是 php 部分:-
<?php
header('Content-type:application/json');
$request = file_get_contents('php://input');
$input=json_decode($request);
$jsonResponse=array(
'firstname' => $input->fname,
'lastname' => $input->lname
);
echo json_encode($jsonResponse);
?>
我已经浏览了几个 stackoverflow 帖子来解决我的错误,但到目前为止,我还没有遇到任何从 ajax 发送 json 对象并从 php 接收 json 对象的帖子。另外,我想知道 isset($_POST) 如何适合这种代码场景,因为我发送的是 json 对象而不是常规表单数据。
最佳答案
尝试将ajax数据部分更改为:
data: {
data: JSON.stringify(formData)
},
并在 php 中接收请求,如下所示:
$request = $_POST['data'];
编辑:完整测试的代码
HTML:
<form id="userDataForm">
<input type="text" placeholder="Firstname" name="fname" id="fname" />
<input type="text" placeholder="Lastname" name="lname" id="lname" />
<input type="submit" value="submit" name="submit">
</form>
JS:
$('#userDataForm').submit(function(e){
e.preventDefault();
var formData={
fname:$('#fname').val(),
lname:$('#lname').val()
};
jQuery.ajax({
type: 'POST',
url: 'process.php',
dataType: 'json',
data: {
data: JSON.stringify(formData)
},
success: function(res) {
alert(res);
}
});
});
PHP:
if (isset($_POST['data'])) {
$request = $_POST['data'];
$input = json_decode($request);
$jsonResponse = array(
'firstname' => $input->fname,
'lastname' => $input->lname
);
echo json_encode($jsonResponse);
}
关于php - 无法将 json 从客户端发送到 php 并接收来自 php 的 json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33977287/