サーバー上のローカル .TXT ファイルを XMLHttpRequest API を使用して 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は唯一の方法ですか?
前もって感謝します、
-デイブ
EDIT: @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は実際にはこれを気に入っていないようです...別の投稿からコードを引っ張ってきました。