我正在尝试从我控制的服务器加载一个非常简单的文本文件(例如:0联机:
或1联机:用户名
或2联机:用户名,用户名
),该文件根据minecraft服务器上的用户数更改为javascript变量,这样,我最终可以将它加载到我的Pebble上,并进行或多或少的实时更新。(阅读:no jquery)(也阅读:我几乎不知道我实际上在做什么,如果有更好的方法,让我知道。)。
我在谷歌上做了很多搜索,主要指向我使用JSON和XMLHTTPRequests(编辑:XMLHTTPRequests可能是必要的),但它们对于我所需要的内容来说似乎过于复杂(即通过HTTP获取文本文件的内容,将其填入变量中,然后让鹅卵石在屏幕上吐出)
没有JQuery,甚至没有JSON,我如何将文本文件的内容加载到javascript变量中?
一些注意事项:
这很容易做到,只需在脚本的开头包含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上),您应该在Pebble教程的第3步中获取一个战利品,它对天气数据正是这样做的。
最简单的方法是将文本文件格式化为js文件:
var playerinfo = "1 online: Username";
并像通常的js一样包含脚本:
<script type="text/javascript" src="http://localhost/mytextfile.js"></script>
然后页面将有一个变量playerinfo
,供js代码使用。