我想出了如何使用 XMLHttpRequest API 将服务器上的本地 .TXT 文件读入 JS,但对于我的生活,我无法让它写入文件。有可能还是仅用于读取文件?
我要阅读的代码可以正常工作:
var fReader = new XMLHttpRequest();
fReader.onreadystatechange=function() {
if(fReader.readyState==4 && fReader.status==200) {
parseText(fReader.responseText);//Processes the file.
}}
fReader.open("GET",fFileLoc,true);
fReader.send();
我目前正在使用 PHP 写入文件,但这远非理想。我真的很希望我们 JS 来做这件事。有什么想法吗?有没有另一种方法来做到这一点?PHP是唯一的方法吗?
提前致谢,
-戴夫
编辑:@rjmunro +others: 我发现使用 PHP 是解决这个问题的更好方法......我修改后的代码如下。(欢迎 C&C)。
JS:
var fReader = XMLHttpRequest();
//var params = "MODE=GET&File=Data.txt";//To read
//var params = "MODE=POST&File=Data.txt&Message=" + myMessage;//To write
fReader.onreadystatechange=function() {
if(fReader.readyState==4 && fReader.status==200) {
//Not really any response text if writing...
parseText(JSON.parse(fReader.responseText).GET);
}
}
fReader.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
fReader.setRequestHeader("Content-length", params.length);
fReader.setRequestHeader("Connection", "close");
fReader.send(params);
PHP
$MODE = $_POST['MODE'];
switch($MODE) {
case('GET'):
#Read in file and process, then return output.
$return['GET'] = file($_POST['File']);
break;
case('POST'):
if(file_exists($_POST['File'])){
$file = fopen($_POST['File'],"a");
$data = $_POST["Message"];
fwrite($file,$data);
fclose($file);
}
#$return['POST'] = "some message?";
break;
}
echo json_encode($return);
唯一我不是 100% 使用这个解决方案的是为什么我必须 setRequestHeader?Chrome 实际上似乎不喜欢这样......我从另一篇文章中提取了代码。