AJAX成功写入文件但文件为空

时间:2018-02-02 15:02:16

标签: javascript jquery ajax

我一直在处理一个无法使用PHP的网页,因此我不得不查找解决方案。我现在有以下jQuery代码:

function writeFile() {
  alert("writing file...");

  $.ajax({
    type: 'POST',
    url: "test.txt", // url of receiver file on server
    data: "test", // your data
    success: alert("sucess writing the file!"), // callback when ajax request finishes
    dataType: "text" // text/json
  });
};

该文件应该在哪里,alert()正在显示(也是success警报),但文件是空的。为什么呢?

2 个答案:

答案 0 :(得分:1)

AJAX无法直接写入文件,因为JavaScript只是客户端而不是服务器端。你想要的是一个捕获你的AJAX请求的服务器;服务器可以是任何东西,包括PHP,JAVA或NodeJS。您只能使用AJAX读取静态文件,但这就是全部。

答案 1 :(得分:0)

您无法使用客户端AJAX脚本编写服务器上的文本文件。您必须使用Node.JS或PHP服务器端脚本来写入服务器上的文件。下面的示例使用PHP脚本。您将需要一个名为test.php的文件,该文件与AJAX所在的页面位于同一目录中。这将POST字符串" hello world" test.php,作为超全球 $_POST['textcontent'] 。使用success字段中的匿名函数可以从PHP脚本获取输出并在页面上显示它。请注意,您可以替换" hello world"在下面的示例中,如果要将用户输入写入文件,则为$("#my-input-area").val()变量。

function writeFile() {
    alert("writing file...");

    $.ajax({
        type: "post",
        url: "test.php",
        data: {
            textcontent: "hello world",
        },
        success: function(response) {
            $("#ajax-area").html(response);
        }
    });
};

然后你的PHP会是这样的。

test.php

<?php

if (!empty($_POST['textcontent'])) {
    file_put_contents("test.txt", $_POST['textcontent']);
    exit("<p>TXT file written successfully!</p>");
}
// This is where you write to the text file.
// The string in the exit() function will appear in your $("#ajax-area")
else {
    exit("<p>No text string submitted.</p>");
}

?>

使用上面的例子,PHP脚本将收到字符串&#34; hello world&#34;来自AJAX的电话。这将写入与PHP脚本位于同一目录中的test.txt文件,该脚本与包含AJAX的页面位于同一目录中。如果需要,可以将它们放在服务器上的不同文件夹中。 PHP脚本输出的任何内容(echoexit)将作为response参数返回到您的AJAX调用中的success函数中。

我希望其中任何一个都有帮助。