【问题标题】:How can I load the contents of a small text file into a javascript var wo/JQuery? [duplicate]如何将小文本文件的内容加载到 javascript var wo/JQuery 中? [复制]
【发布时间】:2015-03-06 13:45:40
【问题描述】:

我正在尝试从我控制的服务器加载一个非常简单的文本文件(例如:0 online:1 online: Username2 online: Username, Username),该文件会根据我的世界服务器上的用户数量而变化一个 javascript 变量,以便我最终可以将它加载到我的 Pebble 上并或多或少地对其进行实时更新。 (阅读:没有 jquery)(另请阅读:我几乎不知道我实际上在做什么,如果有更好的方法,请让我知道。)。

我已经完成了一个lot of googling,它主要指向usingJSONandXMLHTTPRequests(编辑:XMLHTTPRequests 可能是必要的)但它们对于我需要的东西来说似乎过于复杂(这是要采取通过 HTTP 提供文本文件的内容,将其填充到 var 中,然后让 Pebble 将其吐出到屏幕上。)

如果没有 JQuery,甚至可能没有 JSON,我如何将文本文件的内容加载到 javascript var 中?

一些注意事项:

  • 最终将通过 Hamachi 访问服务器,但如果我能在本地运行它,我会非常激动。
  • this answer 之后,我得到this result。本地 IP 也是如此。

【问题讨论】:

  • 如果所需的文本文件位于服务器上,您必须需要 xmlhttprequest 才能获取它...您有什么不同的方法可以解决吗?
  • 基本上你需要 javascript 来执行 http 请求,处理标题和正文,以及状态代码,并更新你的代码(即使它是单个 var) - 为什么不使用 jquery?这是一个电话。
  • @cDima Pebble 不支持,最终的 js 会在 Pebble 上运行。
  • @Rakesh_Kumar 我不太明白,抱歉。我很可能误解了究竟是什么以及如何使用 XMLHTTPRequest。我想有可能让 cron 通过 curl 获取文件,然后使用常规的 open.....

标签: javascript json pebble-watch pebble-js


【解决方案1】:

最简单的方法是将文本文件格式化为 js 文件:

var playerinfo = "1 online: Username";

并像通常的 js 一样包含脚本:

<script type="text/javascript" src="http://localhost/mytextfile.js"></script>

然后页面将有一个变量playerinfo 供您的 js 代码使用。

【讨论】:

  • 这实际上看起来......真的很优雅。我试试看。
  • 唯一的事情是我需要 Pebble 来从服务器中提取该变量。我可以通过js以某种方式将它指向服务器,它每次都会连接最新版本的脚本,还是我需要对XMLHTTPRequest做些什么?
  • 这在 Pebble 上不起作用,因为
【解决方案2】:

这很容易做到,只需在脚本开头包含XmlHttpRequest 的包装器(这样更易于使用):

var xhrRequest = function (url, type, callback) {
  var xhr = new XMLHttpRequest();
  xhr.onload = function () {
    callback(this.responseText);
  };
  xhr.open(type, url);
  xhr.send();
};

然后这样称呼它:

xhrRequest(url, 'GET', function(responseText) { 
  console.log("This is the content you got: " + responseText);
});

如果你用 JSON 格式化你的内容,它实际上会让你更容易,因为你不必解析文件,你可以使用 JavaScript 自动为你解析它:

例如,如果回复是:

{ onlineCount: 42, usernames: [ "Alice", "Bob", "Charlie", "etc" ] }

那么你可以这样处理:

xhrRequest(url, 'GET', 
  function(responseText) {
    // responseText contains a JSON object
    var json = JSON.parse(responseText);

    // Now you can process this as a JavaScript dictionary
    console.log("Number of online players: " + json.onlineCount);
    console.log("First player: " + json.usernames[0]);

    // And send messages to Pebble
    Pebble.sendAppMessage({ 0: json.onlineCount });
  }
);

对于一个完整的示例和 C 端(在 Pebble 上),您应该在 Step 3 of the Pebble Tutorial 上抢购一下,它使用天气数据正是这样做的。

【讨论】:

  • 我最终做了其他事情(Pebble 应用商店上的 MyData),但看起来这确实回答了我的问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-18
  • 2012-04-18
相关资源
最近更新 更多