Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript在服务器上保存文本文件_Javascript_Jquery_Ajax_Text - Fatal编程技术网

使用JavaScript在服务器上保存文本文件

使用JavaScript在服务器上保存文本文件,javascript,jquery,ajax,text,Javascript,Jquery,Ajax,Text,是否可以在不使用PHP的情况下使用JavaScript/jQuery将文本保存到新的文本文件中?我试图保存的文本可能包含HTML实体、JS、HTML、CSS和PHP脚本,我不想转义或使用urlencode 如果只有使用PHP才能实现,那么如何在不编码的情况下将文本传递给PHP?仅使用JavaScript和jQuery等客户端脚本无法将内容保存到网站,但通过在AJAX POST请求中提交数据,您可以在服务器端非常轻松地执行另一半 但是,我不建议让原始内容(如脚本)如此容易地写入主机,因为这很容易被

是否可以在不使用PHP的情况下使用JavaScript/jQuery将文本保存到新的文本文件中?我试图保存的文本可能包含HTML实体、JS、HTML、CSS和PHP脚本,我不想转义或使用urlencode


如果只有使用PHP才能实现,那么如何在不编码的情况下将文本传递给PHP?

仅使用JavaScript和jQuery等客户端脚本无法将内容保存到网站,但通过在AJAX POST请求中提交数据,您可以在服务器端非常轻松地执行另一半

但是,我不建议让原始内容(如脚本)如此容易地写入主机,因为这很容易被利用。如果您想了解更多关于AJAX POST请求的信息,可以阅读jQuery API页面:

如果您仍然希望在主机上保存原始脚本文件,那么以下是一些您应该注意的事项。如果你处理这样的文件,你必须非常小心安全

文件上传(如果javascript可以选择文件名,则如果发送纯文本,则大多数情况都适用)

您必须有一个服务器端脚本来处理您的请求,这不能使用javascript来完成

要将未编码或转义特殊字符的原始数据发送到php并将其保存为新的
txt
文件,可以使用
post
方法和
FormData
发送ajax请求,如:

JS:

PHP:

编辑:

正如Florian在下面提到的,XHR回退是不需要的,因为旧浏览器()不支持
FormData
,所以您可以将XHR变量声明为:

var xhr = new XMLHttpRequest();

另外请注意,这只适用于支持
FormData
的浏览器,如IE+10。

不,它不是。此外,如果有人将js注入你的页面,这将是一个可怕的安全漏洞。这就像一个符咒,文本保存为所有特殊字符:),再次感谢。为什么你支持IE6的XHR,但使用的是
FormData
?其中一个必须退出。@FlorianMargaine(或其他人),您能否编辑答案(这对所有阅读此公认答案的人都很有用)以提供更好的版本?XMLHttpRequest无法加载$php文件。跨源请求仅支持协议方案:http、data、chrome、chrome extension、https、chrome-extension-resource。是否可以使用此方法覆盖现有文件,或者只能创建新文件?
if(!empty($_POST['data'])){
$data = $_POST['data'];
$fname = mktime() . ".txt";//generates random name

$file = fopen("upload/" .$fname, 'w');//creates new file
fwrite($file, $data);
fclose($file);
}
var xhr = new XMLHttpRequest();