【问题标题】:Request plain text file in javascript from URL?从 URL 请求 javascript 中的纯文本文件?
【发布时间】:2016-03-31 17:44:03
【问题描述】:

我最近创建了一个博客并手动编码。它是一个静态的 CSS/HTML5 网站。与朋友分享后,我意识到当我通过 FTP 更新它时,它已经被他们的浏览器缓存了。我决定将我所有的博客文章保留在 页面上,然后创建一个登录页面,该页面会以某种方式确定最新文章并在用户点击 enter 后将其转发到那里按钮或类似的东西。

我能够创建一个可以将它们转发到特定链接的按钮,但我想创建一个始终将它们转发到最新页面的脚本。所以我创建了一个名为“getLatest.json”的文件并将其上传到我网站的“api”子文件夹中。然后我尝试使用 XMLHttpRequest 来加载它:

function loadDoc() {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (xhttp.readyState == 4 && xhttp.status == 200) {
            window.location = "http://latestBlogPost.com" +
            xhttp.responseText.today; 
            //Today is a parent in the object returned.
        }
    };
    xhttp.open("POST", "http://myWebsite.com/api/getLatest.json", true);
    xhttp.send();
}

但这没有用。响应是一个空字符串。我尝试使用 jquery 无济于事。

我尝试上传一个名为 getLatest.html 的文件,其中包含纯文本的 url。那也没用。

tl;dr: 有什么方法可以从 URL 的 html 内容中获取纯文本?

编辑:getLatest.json 和 getLatest.html 包含指向最新博客文章的链接。

【问题讨论】:

  • 你为什么发帖?如果返回的是 JSON 对象,则需要将响应文本转换为 JSON 对象。
  • xhttp.responseText已经包含了json文件的明文,如果你使用GET请求...你不能在上面使用.today,因为responseText没有today 财产。在任何情况下,如果您希望页面不被缓存,您需要将 HTTP 服务器设置为发送正确的标头以不缓存该页面。
  • xhttp.responseText 不是来自 URL 的响应吗?我需要用 JSON 解析它吗?

标签: javascript html blogs browser-cache


【解决方案1】:

有几种方法可以做到这一点。 首先,您的代码不起作用,因为您使用的是“POST”,它应该是“GET”,如果您这样做,它将起作用。

第二种最简单的方法是创建一个声明了变量的 java 脚本文件并将该文件引用到您的网站

<script type="text/javascript" src="http://your javascript file"> </script>

这个文件包含你的变量像这样

var latestBlog = "http://....";

在您的代码中使用此变量。无需更多代码。但正如我之前提到的,如果你改变你的 HTTP 动词来让你的代码可以工作

【讨论】:

  • 这是一个更好的主意。我要用这个。谢谢!
  • 另外,我使用 POST 是因为我需要一个未缓存的文件。
  • 如果您希望文件不被缓存,请附加一些随机数作为查询字符串,例如website.com/getlatest.json?dt=86767
猜你喜欢
  • 2016-06-24
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 2019-03-25
  • 2023-04-05
  • 1970-01-01
  • 2015-11-24
  • 2021-05-04
相关资源
最近更新 更多