是否可以使用JavaScript / jQuery将文本保存到新的文本文件而不使用PHP?我试图保存的文本可能包含HTML实体,JS,HTML,CSS和PHP脚本,我不想逃避或使用urlencode!
如果只能使用PHP实现,如何在不编码的情况下将文本传递给PHP?
答案 0 :(得分:38)
您必须有一个服务器端脚本来处理您的请求,无法使用javascript完成。
要发送没有URIencoding或转义特殊字符的原始数据到php并将其保存为新的txt
文件,您可以使用post
方法和FormData
方式发送ajax请求:
JS:
var data = new FormData();
data.append("data" , "the_text_you_want_to_save");
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new activeXObject("Microsoft.XMLHTTP");
xhr.open( 'post', '/path/to/php', true );
xhr.send(data);
PHP:
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);
}
修改强>
正如Florian在下面提到的,由于旧浏览器(formdata browser compatibiltiy)不支持FormData
,因此不需要XHR回退,因此您可以将XHR变量声明为:
var xhr = new XMLHttpRequest();
另请注意,这仅适用于支持{+ 1}}的浏览器,例如IE +10。
答案 1 :(得分:4)
仅使用JavaScript和jQuery等客户端脚本将内容保存到网站是不可能的,但通过在AJAX POST请求中提交数据,您可以在服务器端非常轻松地执行另一半。
但是,我不建议将脚本等原始内容轻松写入您的主机,因为这很容易被利用。如果您想了解有关AJAX POST请求的更多信息,可以阅读jQuery API页面:
http://api.jquery.com/jQuery.post/
如果您仍想在托管上保存原始脚本文件,那么您应该注意以下事项。如果你正在处理这样的文件,你必须非常小心安全!
文件上传(如果javascript可以选择文件的名称,大部分也适用于发送纯文本) http://www.developershome.com/wap/wapUpload/wap_upload.asp?page=security https://www.owasp.org/index.php/Unrestricted_File_Upload