Я понял, как читать локальный файл .TXT на сервере в JS, используя API XMLHttpRequest, но для жизни меня я не могу заставить его писать в файл. Возможно ли это или только для чтения файлов?Запись в файл JS с использованием XMLHttpRequest?
Мой код читать отлично работает:
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 единственным способом?
Спасибо заранее,
-Dave
EDIT: @rjmunro + другие: Я обнаружил, что использование 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? Хром действительно не нравится это ... Я вытащил код из другого сообщения.
Является ли JS на вашем сервере также там, где хранится файл, который вы хотите записать, например, node.js, потому что из браузера только это невозможно? – Bernhard
Вы можете принять содержимое, которое должно быть написано с использованием JS, а затем передать его на PHP с помощью 'XMLHttpRequest' и, наконец, использовать PHP для записи в файл. Да, php нам нужно писать в файл. –