使用jQuery、Ajax和PHP将json写入文件

使用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

我正在尝试根据填写的表单编写一个json文件

因此,我为jquery使用了一个外部库,将表单转换为合法的JSON。 当我输入console.log该输出时,我确实得到了返回的有效json数据

因此,每当我使用$.ajax将数据传递到php并将内容写入文件时 PHP保存文件,但文件内部只显示“NULL”

以下是我的AJAX:

$(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_encode()

$\u POST['data']
如预期的那样为
null
。您没有发送post数据,而是发送一个字符串作为请求主体。这是真的,这和下面的post我必须首先对json进行字符串化。同样的问题是,输出为空
var jsontext = JSON.stringify($("#user-form").serializeJSON());

var json = {data: jsontext};