【问题标题】:Writing to JSON file using ajax and php. Server not recieving POST使用 ajax 和 php 写入 JSON 文件。服务器没有收到 POST
【发布时间】:2018-10-01 10:51:49
【问题描述】:

我尝试按照其他几个 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);
?>

【问题讨论】:

  • 您希望看到什么作为回应?您没有向客户端发送任何响应
  • 您正在对数据进行双重编码:JSON.stringify(dat)json_encode($_POST['data'])
  • @MasivuyeCokile 对不起,我的意思是我的 json 文件仍然是空白的。它没有得到更新。
  • var_dump($_POST['data'])) 看看你是否真的收到了一些东西。
  • 您的 PHP 进程是否有足够的权限写入该文件?

标签: javascript php jquery json ajax


【解决方案1】:

尝试像这样更新您的代码

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

?>

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

【讨论】:

  • 感谢您的回复。是的,我注意到它被编码了两次,我的错。但这里的主要问题是 general.json 文件仍然是空白的。有什么理由说明为什么会这样?
  • 我已经尝试过那个 php 代码并且它可以工作,你在开发工具上检查了你的 ajax 请求吗?
  • 对不起,我是初学者。我该怎么做呢?我看到使用 Firefox 中检查元素中的网络选项卡发送的发布请求。此外,如果有帮助,它还有代码 405。
  • 405 表示方法不允许。 developer.mozilla.org/en-US/docs/Web/HTTP/Status/405 你可以在浏览器上通过键入 sitename.com/phpfile.php 来访问你的帖子网址吗?
  • 我猜你的问题是你把标题函数放在你的 php 代码中说它是 xml,你会提供 dataSaveAjax.php 文件
【解决方案2】:

首先您需要了解是什么原因以及我们的脚本无法运行的原因。首先,让我们看一下服务器部分(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));

你的数据真的会被收集,还是你试图将空数据发送到文件中?

【讨论】:

    猜你喜欢
    • 2017-03-14
    • 1970-01-01
    • 2021-09-24
    • 2020-10-22
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 2020-06-28
    • 2016-06-27
    相关资源
    最近更新 更多