Чтение бокового файла сервера с помощью Javascript
Кто-нибудь знает о том, как читать данные из файла на стороне сервера с помощью JS? Кажется, я не могу найти какие-либо темы по этому поводу, когда я это сделаю. Я пытался использовать, но он, похоже, не работает. Я просто хочу прочитать некоторые данные из файла для отображения на странице. Возможно ли это?
var CSVfile = new File("test.csv");
var result = CVSfile.open("r");
var test = result.readln();
Ответы
Ответ 1
Для этого вам нужно будет извлечь файл с сервера с помощью метода AJAX.
Я бы рассмотрел библиотеки JavaScript, такие как Mootools и jQuery. Они делают AJAX очень простым.
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mootools/1.6.0/mootools-core.min.js"></script>
<script type="text/javascript">
//This event is called when the DOM is fully loaded
window.addEvent("domready",function(){
//Creating a new AJAX request that will request 'test.csv' from the current directory
var csvRequest = new Request({
url:"test.csv",
onSuccess:function(response){
//The response text is available in the 'response' variable
//Set the value of the textarea with the id 'csvResponse' to the response
$("csvResponse").value = response;
}
}).send(); //Don't forget to send our request!
});
</script>
</head>
<body>
<textarea rows="5" cols="25" id="csvResponse"></textarea>
</body>
</html>
Если вы загрузите это в каталог, на котором test.csv находится на вашем веб-сервере и загрузите страницу, вы должны увидеть, что содержимое test.csv отображается в определенном текстовом поле.
Ответ 2
Вам нужно использовать AJAX. С помощью библиотеки jQuery код может выглядеть так:
$.ajax({ url: "test.csv", success: function(file_content) {
console.log(file_content);
}
});
или если вы не хотите использовать библиотеки, используйте необработанный объект XMLHTTPRequest (но у вас есть разные имена в разных браузерах
function xhr(){
var xmlHttp;
try{
xmlHttp=new XMLHttpRequest();
} catch(e) {
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
alert("Your browser does not support AJAX!");
return false;
}
}
}
return xmlHttp;
}
req = xhr();
req.open("GET", "test.cvs");
req.onreadystatechange = function() {
console.log(req.responseText);
};
req.send(null);
UPDATE 2017 появился новый fetch api, вы можете использовать его следующим образом:
fetch('test.csv').then(function(response) {
if (response.status !== 200) {
throw response.status;
}
return response.text();
}).then(function(file_content) {
console.log(file_content);
}).catch(function(status) {
console.log('Error ' + status);
});
поддержка довольно хорошая, если вам нужно поддерживать браузер, который не поддерживает API-интерфейс Fetch, вы можете использовать polyfill, чтобы github создан