dsc*_*her 3 javascript ajax encoding json
我不能为我的生活弄清楚我做错了什么.看起来它应该很简单,因为我找不到其他人有这个问题,但我不知道通过javascript(jQuery)发送基本数据到PHP并解码它.为简单起见,这就是我所拥有的:
JAVASCRIPT
var json_data = { "name" : "john doe" };
$.ajax({
type: "POST",
url: "../bin/process.php",
dataType: "json",
data: json_data
});
Run Code Online (Sandbox Code Playgroud)
和我的PHP文件
$arr = json_decode("json_data", true);
$fp = fopen('data.txt', "w");
fwrite($fp, $arr['name']);
fclose($fp);
Run Code Online (Sandbox Code Playgroud)
我正在写的文件最终没有任何内容.如果我这样做:
fwrite($fp, 'test');
Run Code Online (Sandbox Code Playgroud)
我得到一个带有单词test的文件,但无论我做什么,我都没有得到我发送的json数据.
有人可以分享A到Z的完整示例.感谢您的帮助.
您使用jQuery创建的ajax请求将发送参数'name',其值为'john doe',而不是整个对象.如果要发送整个对象,则必须像这样传递:
data: { parameters: json_data }
Run Code Online (Sandbox Code Playgroud)
在PHP方面,您可以从$ _POST超全局获取变量.使用您的示例,您将使用:
$name = $_POST['name'];
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用我的示例发送整个对象:
$params = $_POST['parameters'];
Run Code Online (Sandbox Code Playgroud)
不需要使用json_decode(),因为从$ _POST数组中提取的参数已经是本机PHP变量.
你只需要使用它,如果你有一个json字符串,你想把它变成一个PHP变量,这不是这里的情况,因为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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5765 次 |
| 最近记录: |