我无法终生弄清楚自己在做什么错。似乎应该很简单,因为我找不到其他人遇到这个问题,但是我不知道要通过javascript(jQuery)将基本数据发送到PHP并对其进行解码。为了简单起见,这就是我所拥有的:
JAVASCRIPT
var json_data = { "name" : "john doe" }; $.ajax({ type: "POST", url: "../bin/process.php", dataType: "json", data: json_data });
和我的PHP文件
$arr = json_decode("json_data", true); $fp = fopen('data.txt', "w"); fwrite($fp, $arr['name']); fclose($fp);
我正在写的文件最终没有任何内容。如果我这样做:
fwrite($fp, 'test');
我得到了一个带有单词test的文件,但是无论我做什么,我都没有得到发送的json数据。
有人可以分享A到Z的完整示例。谢谢您的帮助。
您使用jQuery发出的ajax请求将发送参数“ name”和值“ john doe”,而不是整个对象。如果要发送整个对象,则必须像这样传递它:
data: { parameters: json_data }
在PHP方面,您可以从$ _POST超全局变量获取变量。使用您的示例,您将使用:
$name = $_POST['name'];
或者,如果您发送整个对象,请使用我的示例:
$params = $_POST['parameters'];
无需使用json_decode(),因为从$ _POST数组中拉出的参数已经是本机PHP变量。
如果您有一个要转换为PHP变量的json字符串,则只需要使用它,在这里不是这种情况,因为jQuery会将javascript对象“转换”为后台的查询字符串。
在极少数情况下,您需要以JSON格式从javascript发送数据,但是如果要这样做,则需要类似以下内容:
// 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'