使用ajax和php写入JSON文件。服务器未收到POST

时间:2018-10-01 10:51:50

标签: javascript php jquery json ajax

我尝试按照其他一些stackoverflow问题中的步骤进行操作,但是由于某种原因,我的服务器未显示任何接收请求的指示。我知道客户端正在发送请求,因为它显示在firefox调试器中。 这是js方法:

function writeToFile(dat) {
    $.ajax({
        url     : 'dataSaveAjax.php',
        method  : 'post',
        data    : { 'data': JSON.stringify(dat) },
        success : function( response ) {
            alert( response);
          }
    });
}

PHP代码:

<?php
    $fp = fopen('general.json', 'w');
    fwrite($fp, json_encode($_POST['data']));
    fclose($fp);
?>

2 个答案:

答案 0 :(得分:0)

尝试像这样更新代码

<?php
$fp = fopen('general.json', 'w');
$writtingResponse = fwrite($fp, $_POST['data']);
fclose($fp);
echo $writtingResponse;

?>

您没有编写任何响应,并且对json进行了两次编码。

答案 1 :(得分:0)

首先,您需要了解什么是原因以及为什么我们的脚本不起作用。首先,让我们看一下服务器部分(php)。首先,将数据放在变量中,而不是$ _POST ['data']尝试执行以下操作:

<?php
    $fp = fopen('general.json', 'w');
    fwrite($fp, 'MyTest');
    fclose($fp);
?>

如果这不起作用,则最有可能的原因是您需要设置文件(Chmod)的写权限。

如果所有记录均正确记录,则表明站点的客户端部分出了问题。对于POST / GET查询,我通常使用Postman。它不仅允许测试请求,还可以生成代码。如果您通过Postman运行查询并将结果写入文件,则JavaScript中的错误是明确的。尝试在浏览器中按F12键,然后转到js控制台,在那里您将看到一条错误消息。您是否在示例中使用jQuery,并且它已连接?在尝试执行脚本之前是否已连接? 尝试查看您尝试使用控制台(F12)发送的数据

console.log(JSON.stringify(dat));

是真的要收集您的数据,还是要向文件发送空数据?