【问题标题】:how to read text from text file using javascript如何使用javascript从文本文件中读取文本
【发布时间】:2014-04-29 22:48:57
【问题描述】:

这是我需要读取的文本文件: http://openweathermap.org/help/city_list.txt

我把它本地保存在我的桌面并写了以下代码:

<!html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" ></script>
<script>
$(document).ready(function () {
  $.get('city_list.txt', function(data) {

    var lines = data.split(/\n/);

  });
});
</script>
</head>
<body>
hello
</body>
</html>

我得到的错误是:

XMLHttpRequest 无法加载 file:///C:/Users/LIRON/Desktop/city_list.txt。 收到无效回复。因此,不允许访问 Origin 'null'。

我做错了什么?

【问题讨论】:

    标签: javascript file text


    【解决方案1】:

    jquery默认不允许对其他页面执行请求,即CrossDomain。 您正在尝试读取外部文件 如果您正在执行本地程序,您可以运行您的 Chrome 实例:

    chrome.exe --allow-file-access-from-files
    

    但是,如果您使用的是 apache,如果您可以控制响应服务器,那么处理此问题的最简单方法是为以下内容添加响应标头:

    Access-Control-Allow-Origin: *
    

    这将允许跨域 Ajax。在 PHP 中,您需要像这样修改响应:

    <?php header('Access-Control-Allow-Origin: *'); ?>
    

    您可以将 Header set Access-Control-Allow-Origin * 设置放在 Apache 配置或 htaccess 文件中。它就像一个魅力。

    【讨论】:

    • 我没有使用 apache 只是 notepad++ 我该怎么办????我很无奈,也许将文件上传到像 0000webhost 这样的服务器?
    【解决方案2】:

    如果您的代码是从远程服务器执行的,则不允许您执行 get 请求,因为存在 Access-Control-Allow-Origin 标头。 但是,如果您的文本文件位于同一服务器/域上,您应该可以使用此获取请求来完成:

    $(function(){
      $.get('THE_PATH/city_list.txt', null, function(data) {
          var lines = data.split(/\n/);
      }, "text")
    })
    

    【讨论】:

      【解决方案3】:

      jQuery get 请求会发出 HTTP 请求,因此您应该在 get 请求中保留完整的 url “http://openweathermap.org/help/city_list.txt”。

      试试这个:

      $.get('http://openweathermap.org/help/city_list.txt', 函数(数据) {

      var lines = data.split(/\n/);

      },"文本");

      【讨论】:

      • 试过了,现在它写道:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'null'。
      猜你喜欢
      • 1970-01-01
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多