我一直在处理一个无法使用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
警报),但文件是空的。为什么呢?
答案 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脚本输出的任何内容(echo
或exit
)将作为response
参数返回到您的AJAX调用中的success
函数中。
我希望其中任何一个都有帮助。