使用JavaScript

时间:2016-04-28 17:46:24

标签: javascript html

我在我的网络服务器上有一个JS脚本,我希望能够读取文件。 我的文件系统是这样的:

> Root
index.html
read.js
> files
    file.txt

在这个例子中,文件" file.txt"将包含简单的单词" Hello"

使用JavaScript,我希望能够创建一个函数,例如:

function read (path) {
    //Stuff to read the file with specified path
    var content = //whatever the content is
    return content;
}

然后可以用:

来调用它
var file = read("/files/file.txt")

然后当我做

alert(file)

它会弹出/提醒您" Hello",file.txt的内容。

有什么方法可以做到这一点吗?

5 个答案:

答案 0 :(得分:13)

以下是您的示例网页:

http://sealevel.info/test_file_read.html

这是javascript代码:

// Synchronously read a text file from the web server with Ajax
//
// The filePath is relative to the web page folder.
// Example:   myStuff = loadFile("Chuuk_data.txt");
//
// You can also pass a full URL, like http://sealevel.info/Chuuk1_data.json, but there
// might be Access-Control-Allow-Origin issues. I found it works okay in Firefox, Edge,
// or Opera, and works in IE 11 if the server is configured properly, but in Chrome it only
// works if the domains exactly match (and note that "xyz.com" & "www.xyz.com" don't match).
// Otherwise Chrome reports an error:
//
//   No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://sealevel.info' is therefore not allowed access.
//
// That happens even when "Access-Control-Allow-Origin *" is configured in .htaccess,
// and even though I verified the headers returned (you can use a header-checker site like
// http://www.webconfs.com/http-header-check.php to check it). I think it's a Chrome bug.
function loadFile(filePath) {
  var result = null;
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.open("GET", filePath, false);
  xmlhttp.send();
  if (xmlhttp.status==200) {
    result = xmlhttp.responseText;
  }
  return result;
}

答案 1 :(得分:3)

您正在寻找的是XMLHttpRequest

答案 2 :(得分:1)

如果您使用的是JQuery,这是一个非常简单的任务 - 下面的示例将执行HTTP GET请求(使用上面引用的XMLHttpRequest.as),并将内容放入ID为"的HTML DOM对象中。结果&#34 ;.一旦加载完成,它也会抛出警报框。

$( "#result" ).load( "files/file.txt", function() {
  alert( "Load was performed." );
});

答案 3 :(得分:0)

它并不像听起来那么简单,你将不得不对服务器与客户端进行一些研究。

除非您与服务器建立连接,否则无法通过Javascript读取服务器端数据。无论在客户端浏览器上运行的任何Javascript代码都只保留在他们的浏览器上,即使两者都在同一台计算机上运行。您需要的是一种使客户端(在本例中为html + javascript网站)与服务器通信的方法。

有很多方法可以做到这一点,但最简单的方法是通过GET请求到服务该文本文件的服务器。

尝试使用NGINX或NodeJS等服务静态文件,具体取决于您的需求。从那里,创建一个GET端点,您的Javascript将通过XMLHttpRequest连接到该端点(如@MattW。所述)。

答案 4 :(得分:0)

您希望像Gabriel建议的那样使用XMLHttpRequest

您真的需要阅读它,因为它非常易于配置,您需要了解工作流程才能实现它。如果您是跨源脚本,最初会遇到问题。

这是我为你嘲笑的一个例子:

<span id="placeholder"></span>
<script>
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
            document.getElementById('placeholder').innerHTML = xhr.responseText;
        }
    }
    xhr.open('GET', 'test.html');
    xhr.send();
</script>