0

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

所以我使用了一个外部库来将表单转换为合法的 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);
?>

这是输出文件的内容:

NULL

我首先尝试在这里查找并尝试了许多选项,但似乎没有一个选项可以保存正确的数据。真的很奇怪。

提前致谢!

4

2 回答 2

1

您总是可以从此更改您的 json 字符串

 var json = $("#user-form").serializeJSON();

对此

 var json = {data: $("#user-form").serializeJSON()};

这样,当您尝试检索 $_POST['data'] 时,它实际上会被设置,因为您定义了它。

编辑:Shuyinsama 的重点 - 指出您必须JSON.stringify在 JSON 对象上使用该方法,然后才能将它们发布到 PHP:

就我而言,这就是我所做的:

var jsontext = JSON.stringify($("#user-form").serializeJSON());

var json = {data: jsontext};

然后使用第一个 PHP 文件将其写入有效的 JSON 文件。

并且永远记住,json_decode();如果您需要json_encode();分别对 JSON 数据和 进行一些处理,您可以在 PHP 中使用。

于 2013-07-11T15:58:10.693 回答
0

除非有一个名为“data”的 post 变量,否则它将返回 null。你可能想试试http_get_request_body()

于 2013-07-11T15:37:57.070 回答