【发布时间】:2015-01-13 12:49:40
【问题描述】:
我正在尝试使用 post 方法将 JSON 数据从 jQuery ajax 传递到 PHP。然后我必须将此数据保存到文本文件中。
这是我要提交给 PHP 的主要对象中的 JSON 节点。 我从 Chrome 的控制台捕获了这张图片,因为我很懒。
这是进行调用的 javascript 代码:
function save(data, backup, notify, clear) {
$.ajax({
type: "POST",
url: "user.php?action=save&backup="+backup,
data: data,
async: false,
success: function(result){
console.log(result);
},
error:function(e){
console.log(console.log(e));
}
});
}
然后当我尝试在我的 php 中 var_dump 这个 $_POST 数据时,输出如下所示:
var_dump($_POST);
// save
file_put_contents($file, json_encode($_POST,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
如您所见,“文件”节点消失了。为什么?如何将空节点传递给 PHP?我只需要带有密钥的“文件”节点。我会在一段时间后添加一些值。
解决方案:
在 JS 中:
data: {"data": JSON.stringify(data) },
在 PHP 中:
$data = json_decode(stripslashes($_POST['data']));
file_put_contents($file, json_encode($data, JSON_PRETTY_PRINT));
【问题讨论】:
-
你能发布发出 post 调用的 JavaScript 吗?
-
@robbmj 好的,我只是更新问题。
-
您是否在代码中的任何时候对
data调用JSON.stringify()data对象继承自另一个对象? -
不,我没有在我的代码中的任何地方使用
JSON.stringify()。当我尝试在 ajax 调用之前转储data变量时,我可以看到files节点。 -
问题与PHP无关,与jQuery有关。 stackoverflow.com/q/14999897/362536stackoverflow.com/q/5319106/362536
标签: javascript php jquery ajax json