使用jquery发出的ajax请求将发送参数“name”,值为“john doe”,而不是整个对象。如果要发送整个对象,必须这样传递:
data: { parameters: json_data }
在php方面,您可以从$u post superglobal获取变量。使用您的示例,您将使用:
$name = $_POST['name'];
或者,如果发送整个对象,使用我的示例:
$params = $_POST['parameters'];
不需要使用json_decode(),因为从$_post数组中提取的参数已经是本地php变量。
如果您有一个json字符串,您只需要使用它,因为jquery将把javascript对象“转换”为后台的查询字符串,所以您希望将其转换为php变量,而不是这里的情况。
很少有需要从javascript以json形式发送数据的情况,但是如果您想这样做,您需要如下内容:
// JS
var person = "{ name: 'John Doe' }"; // notice the double quotes here, this is a string, and not an object
$.ajax({
type: "POST",
url: "../bin/process.php",
dataType: "json",
data: { json: person }
});
// PHP
$json = $_POST['json']; // $json is a string
$person = json_decode($json); // $person is an array with a key 'name'