【问题标题】:Get text from a txt file in the url从 url 中的 txt 文件中获取文本
【发布时间】:2017-02-07 01:19:26
【问题描述】:

当我访问这样的网址时:http://my.url.com/file.txt,浏览器会显示文本。

我想要一个执行以下操作的简单 javscript 命令:
1.转到网址
3. 获取屏幕上显示的文字
4. 将其存储在变量中以供进一步处理

有点像

var url = http: //my.url.com/file.txt;

//这里的一些代码去url

//一些获取上述信息并执行以下操作的代码:

var fileInfo = ---content of file.txt---

请注意,我从 txt 文件中寻找的信息在 html 标签中

<p>Text I need in Variable</p>

任何帮助将不胜感激!
谢谢!

【问题讨论】:

标签: javascript html http


【解决方案1】:

Use the Fetch API.

Play with itjsfiddle.net.

var url = 'https://fiddle.jshell.net/robots.txt';
var storedText;

fetch(url)
  .then(function(response) {
    response.text().then(function(text) {
      storedText = text;
      done();
    });
  });

function done() {
  document.getElementById('log').textContent =
    "Here's what I got! \n" + storedText;
}

这是一个较小的 ES6 示例,它将获取与存储和展示结果分开。

fetch('https://fiddle.jshell.net/robots.txt')
  .then((response) => response.text().then(yourCallback));

function yourCallback( retrievedText ) { /* . . . */ }

Adoption is already across the board.

您不必等待。大多数人没有。你不应该。
GitHub provides a polyfill of those who can't upgrade.

fetch 有什么比 XHR 更好的地方? ...Lots.

【讨论】:

  • 免责声明:Fetch 支持处于相当早期的阶段,但正在取得进展。它在 Firefox 39 及更高版本和 Chrome 42 及更高版本中默认开启。
  • 对于老浏览器或者拒绝更新的人; github.github.io/fetch
  • 非常感谢您的回复,但这是我在空白控制台中运行时遇到的错误:Fetch API cannot load http://www.my-sample-url.com/文件.txt。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'chrome://newtab' 不允许访问。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。 undefined:1 Uncaught (in promise) TypeError: Failed to fetch(...)
  • 您正在从对chrome://newtab 的修改中获取?而您正在尝试获取外部资源...嗯。尝试创建一个Request,而不是使用 URL 作为字符串参数来获取。将.mode 指定为'no-cors'。在这种状态下,可能无法检索文本。您可能需要专门针对 chrome://newtab 提出不同的问题。
  • 很好的例子。我刚刚制作了一个简单的静态站点处理程序(不想要“真正的”SSG 的所有开销),它使用fetch 拉入 .md 文件,并在我的静态 HTML 页面中动态地将它们转换为 HTML。现在我可以git push 并且该站点已在 GitHub 页面上更新:-)
【解决方案2】:

对 url 进行 AJAX 调用。这里使用jQuery 库:

$.get( "http: //my.url.com/file.txt", function( data ) {
  var text = data;
});

要从段落标签之间的文本字符串中提取您需要的内容,请尝试正则表达式:

var pText = text.match(/<p>([^<]+)<\/p>/)[1];

【讨论】:

  • 你做出假设:每个人都使用 JQuery 吗?!
  • 你真的想使用原生 javascript? stackoverflow.com/questions/8567114/…
  • 在某些情况下你会被原版 JS 卡住;)
  • @ndcomix +1 表示无礼
  • 如果您是 CasperJS 开发人员,您可以使用远程网站使用的内容。如果没有 JQuery,就没有雪茄。这是一个例子
【解决方案3】:

只需使用 jquery。它简单有趣且可扩展。不要尝试奇怪的用途。确保始终通过所有浏览器兼容。如果您复制它并在本地或远程网络服务器下运行它,它将像魅力一样工作。 干杯。

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("button").click(function(){
        $.ajax({url: "test.txt", success: function(result){
            $("#div1").html(result);
        }});
    });
});
</script>
</head>
<body>

<div id="div1"><h2>Let jQuery AJAX Change This Text</h2></div>

<button>Get External Content</button>

</body>
</html>

【讨论】:

    【解决方案4】:

    使用 vanilla JS :

    来自 MDN 文档:

    function reqListener () {
      console.log(this.responseText);
    }
    
    var oReq = new XMLHttpRequest();
    oReq.addEventListener("load", reqListener);
    oReq.open("GET", "http://www.example.org/example.txt");
    oReq.send();
    

    https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

    阅读文档和ndcomix SO link 以进一步了解(错误检查等)

    【讨论】:

    猜你喜欢
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    相关资源
    最近更新 更多