我有一个使用javascript的html页面,用户可以选择从他的PC中读取和使用自己的文本文件.但我希望在服务器上有一个示例文件,用户可以通过单击按钮打开该文件.我不知道打开服务器文件的最佳方法是什么.我用谷歌搜索了一下.(我是html和javascript的新手,所以也许我对以下内容的理解不正确!).我发现javascript是基于客户端的,打开服务器文件并不是很简单.看起来最简单的方法是使用iframe(?).所以我正在尝试(首先测试只是为了打开网页的onload)以下内容.将kgr.bss放在服务器上与我的html页面相同的目录中:
<IFRAME SRC="kgr.bss" ID="myframe" onLoad="readFile();"> </IFRAME>
Run Code Online (Sandbox Code Playgroud)
和(使用file_inhoud,其他地方定义的行)
function readFile() {
func="readFile=";
debug2("0");
var x=document.getElementById("myframe");
debug2("1");
var doc = x.contentDocument ? x.contentDocument : (x.contentWindow.document || x.document);
debug2("1a"+doc);
var file_inhoud=doc.document.body;
debug2("2:");
lines = file_inhoud.split("\n");
debug2("3");
fileloaded();
debug2("4");
}
Run Code Online (Sandbox Code Playgroud)
调试功能显示:
readFile=0//readFile=1//readFile=1a[object HTMLDocument]//
Run Code Online (Sandbox Code Playgroud)
所以停止程序的声明是:
var file_inhoud=doc.document.body;
Run Code Online (Sandbox Code Playgroud)
怎么了?读取此文件的正确(或最佳)方法是什么?
注意:我看到文件被读取并显示在框架中.
谢谢!
T.J*_*der 17
你最好的选择,因为你的服务器上的文件是通过"ajax"检索它.这代表异步JavaScript和XML,但XML部分是完全可选的,它可以用于各种内容类型(包括纯文本).(就此而言,异步部分也是可选的,但最好坚持使用它.)
这是使用ajax请求文本文件数据的基本示例:
function getFileFromServer(url, doneCallback) {
var xhr;
xhr = new XMLHttpRequest();
xhr.onreadystatechange = handleStateChange;
xhr.open("GET", url, true);
xhr.send();
function handleStateChange() {
if (xhr.readyState === 4) {
doneCallback(xhr.status == 200 ? xhr.responseText : null);
}
}
}
Run Code Online (Sandbox Code Playgroud)
你这样称呼:
getFileFromServer("path/to/file", function(text) {
if (text === null) {
// An error occurred
}
else {
// `text` is the file text
}
});
Run Code Online (Sandbox Code Playgroud)
但是,上面的内容有所简化.它适用于现代浏览器,但不适用于某些较旧的浏览器,您必须解决某些问题.
更新:你在下面的评论中说你正在使用jQuery.如果是这样,你可以使用它的ajax功能,并获得jQuery的解决方案的一些浏览器不一致的好处:
$.ajax({
type: "GET",
url: "path/to/file",
success: function(text) {
// `text` is the file text
},
error: function() {
// An error occurred
}
});
Run Code Online (Sandbox Code Playgroud)
边注:
我发现javascript是基于客户端的......
不,这是一个神话.JavaScript只是一种编程语言.它可以在浏览器,服务器,工作站等上使用.事实上,JavaScript 最初是为服务器端使用而开发的.
目前,最常见的用途(和您的用例)确实在Web浏览器中,客户端,但JavaScript在一般情况下不仅限于客户端.事实上,它正在服务器和其他地方重新抬头.
检索文本文件(或任何其他服务器端资源)的常用方法是使用AJAX.以下是如何提醒文本文件内容的示例:
var xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.onreadystatechange = function(){alert(xhr.responseText);};
xhr.open("GET","kgr.bss"); //assuming kgr.bss is plaintext
xhr.send();
Run Code Online (Sandbox Code Playgroud)
然而,您的最终目标的问题在于传统上不可能使用javascript来访问客户端文件系统.但是,新的HTML5文件API正在改变这一点.你可以在这里阅读.