我的服务器上有翻译文件,它们是世界可读的(chmod 777)。我需要在某些脚本功能中使用翻译功能,例如,我需要等待XMLHttpRequest
服务器的响应以显示消息。但是,根据MDN,您可以使用此API读取存储在用户计算机上的文件。但是,我可以使用此API或JavaScript中的任何其他方法来读取和处理服务器文件吗?
假设我en.csv
存储了一个翻译文件,/var/www/html/public/en.csv
内容如下:
"A":"B"
"C":"D"
"E":"F"
"G":"H"
其中左列是源语言,右列是目标语言。在PHP中很容易,但是在JavaScript中却遇到问题。
我尝试了以下脚本和html标记,但是它不起作用。转换文件位于服务器上的当前目录中。
<script>
function translate(fileName) {
var reader = new FileReader();
var content = reader.readAsBinaryString(fileName);
document.getElementById('testContainer').innerHTML = content.toString();
}
</script>
<div id="testContainer">
<script>
translate('en.csv');
</script>
</div>
您需要像blob
读取文件之前一样获取文件:
File.load = function (file_url) {
return fetch(file_url).then(res => res.blob());
};
function translate(fileName) {
File.load(fileName).then(function (blob) {
var reader = new FileReader();
reader.onload = function (e) {
document.getElementById('testContainer').innerHTML = e.target.result;
};
reader.readAsText(blob);
});
}
translate('https://raw.githubusercontent.com/nguyennhuttan/testonso/master/en.csv');
<div id="testContainer"></div>
FileReader
支持onload
方法,我们使用此方法来确保文件已成功读取。
资源:
更新:将ajax与GET方法一起使用
$.ajax({
url: 'https://raw.githubusercontent.com/nguyennhuttan/testonso/master/en.csv',
type: 'GET',
success: function (data) {
document.getElementById('testContainer').innerHTML = data;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="testContainer"></div>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句