使用jQuery、Ajax和PHP将json写入文件
我正在尝试根据填写的表单编写一个json文件 因此,我为jquery使用了一个外部库,将表单转换为合法的JSON。 当我输入console.log该输出时,我确实得到了返回的有效json数据 因此,每当我使用$.ajax将数据传递到php并将内容写入文件时 PHP保存文件,但文件内部只显示“NULL” 以下是我的AJAX:使用jQuery、Ajax和PHP将json写入文件,php,jquery,html,ajax,Php,Jquery,Html,Ajax,我正在尝试根据填写的表单编写一个json文件 因此,我为jquery使用了一个外部库,将表单转换为合法的JSON。 当我输入console.log该输出时,我确实得到了返回的有效json数据 因此,每当我使用$.ajax将数据传递到php并将内容写入文件时 PHP保存文件,但文件内部只显示“NULL” 以下是我的AJAX: $(document).ready(function() { var json = $("#user-form").serializeJSON(); $.aj
$(document).ready(function() {
var json = $("#user-form").serializeJSON();
$.ajax({
url: "writejson.php",
type: "POST",
data: json,
processData: false,
contentType: 'application/json'
});
})
这是我的PHP:
<?php
$myFile = "kiosk.json";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh,var_export($_POST['data'], true));
fclose($fh);
?>
我首先尝试在这里查找它,并尝试了许多选项,但它们似乎都无法保存正确的数据。
真奇怪
提前谢谢 除非有一个名为“data”的post变量,否则它将返回null。您可能想尝试一下您可以随时更改json字符串
var json = $("#user-form").serializeJSON();
对此
var json = {data: $("#user-form").serializeJSON()};
这样,当您尝试检索$_POST['data']时,它实际上会被设置,因为您定义了它
Shuyinsama的编辑:要点-指出在将JSON对象发布到PHP之前,必须对其使用JSON.stringify
方法:
就我而言,我就是这么做的:
var jsontext = JSON.stringify($("#user-form").serializeJSON());
var json = {data: jsontext};
然后使用第一个PHP文件将其写入有效的JSON文件
请记住,您可以使用
json_decode()如果您需要对JSON数据进行一些处理,请使用PHP中的code>和JSON_encode()代码>。$\u POST['data']
如预期的那样为null
。您没有发送post数据,而是发送一个字符串作为请求主体。这是真的,这和下面的post我必须首先对json进行字符串化。同样的问题是,输出为空
var jsontext = JSON.stringify($("#user-form").serializeJSON());
var json = {data: jsontext};