我现在已经尝试过很多次了,使用不同的方法,但没有一个对我有用,所以我问了这个问题。
我有一个小表格,包含 4 条信息,一个人的头衔、名字、中间名和姓氏。当我点击一个按钮时,会形成一个 JSON 对象,并通过 jQuery.ajax 方法作为发布数据发送。
JSON 发送到 PHP 文件:
{
"title": "Mr",
"firstName":"Banana",
"middleName":"Slippy",
"lastName":"McDougle"
}
按下按钮时的 Ajax 调用:
function insertPerson(obj, callback){
$.ajax({
type: "POST",
data: "json=" + JSON.stringify(obj),
url: "insertData.php",
success: function(obj){
if (callback){ callback(obj) };
},
error: function(error){
console.log("Error:");
console.log(error);
}
});
}
我传入一个 Javascript 对象,然后将其字符串化并作为参数名称“json”发布。
在我的 php 文件中,我将发布的字符串分配给一个名为 $json 的变量,然后我使用 json_decode() 进行解码,做一些时髦的事情,并将响应发送回浏览器。
插入数据.php:
require ('connect.php');
header('Content-type: application/json');
$json_string = $_POST['json'];
$json = json_decode($json_string);
...do server related inserts/selects etc...
echo json_encode($json->title);
目前我只想返回在 post 请求中发送的 json 对象的 title 属性,但我返回的任何内容都返回为 null。如果我回显字符串,而不对其进行解码,那么我会得到以下信息:
{\"title\":\"Mr\",\"firstName\":\"Banana\",\"middleName\":\"Slippy\",\"lastName\":\"McDougle\"}
如果我尝试使用以下方法提取值: $title = $json->title; 并将其放入 MYSQL 语句中,将其作为 null 或空白插入,没有任何输入。
难道我做错了什么?还是我以某种方式获得了过时的 PHP 版本来处理 JSON?非常感谢您的帮助。