0

我目前正在创建一个 facebook 粉丝页面 (www.facebook.com.SSBMstream),并且我正在使用静态 html 应用程序创建一个部分,该部分将允许用户使用按钮选择他们希望观看的 twitch.tv 流。我想更进一步,根据频道是“直播”还是离线列出频道。Twitchtv/Justintv 已经为此设置了一个 api (http://api.justin.tv/api/stream/list.json?channel=),您可以在其中插入频道名称并获取 '[]' 如果它不是现场的,如果是的话,我相信是 JSON。如何动态检查我的数组中的每个频道以确定它是否处于活动状态,并在可能的情况下访问该 api 中的信息以允许我更新标题等?

编辑:这是我的代码的空心版本(只有我遇到问题的部分)我让它从另一个页面返回信息作为调试器,所以我可以测试它是否(如果/何时)它正在工作.

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function loadJSON()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4)
    {
    document.getElementById("div1").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","http://api.justin.tv/api/stream/list.json?channel=ignproleague",true);
xmlhttp.send();
}
</script>
</head>
<body>

<div id="div1"><h2>Just a test</h2></div>
<button type="button" onclick="loadJSON()">Change Content</button>

</body>
</html>
4

1 回答 1

0

这取决于 twitch 如何定义什么是直播的,什么不是直播的。抱歉,我对 twitch 的 API 不是很熟悉,但如果它返回一个空数组,如果频道没有直播,你可以简单地检查if (array.length == 0).

如果给您一个 JSON 对象,那么只需与您需要的适当信息进行交互。我不确切知道 twitch 如何格式化他们的 JSON 对象,但这里有一个例子。假设它返回了这个 JSON 对象:

var JSONobj = {
"channelName": "e-sports", "channelTheme: "Professional Gaming", "viewerCount": 100 
};

要检索信息,您只需调用相应的字段。

var chan = JSONobj.channelName; //chan = "e-sports
var theme = JSONobj.channelTheme; //theme = "Professional Gaming"

希望这可以帮助

编辑:看来您需要帮助来理解 AJAX。让我大致了解一下语法是什么。我个人使用一个叫Prototype.js的框架

new Ajax.Request(WEB_SERVICE, {
    method: "get",
    parameters: {"type" : type, "name" : name},
    onSuccess: successCall,
    onFailure: ajaxError,
    onException: ajaxError
});

这是您非常典型的 AJAX 请求。当它被调用时,它会向 WEB_SERVICE(通常是一个 PHP 文档,它将获取传递的参数然后从中计算一些东西)抛出一个 AJAX 请求。在这种情况下,传递的方法是“GET”,传递的参数是具有字段“type”和“name”的对象的形式。successCall 是 AJAX 请求成功传递时调用的方法,返回已经计算好的 ajax。我假设在您的场景中,您的 AJAX 应该以 JSON 格式接收一些信息,因此您的 successCall 函数不仅获取该信息很重要,而且像 JSON 一样解析它。您的 successCall 函数将如下所示:

function successCall(ajax) {
    var info = JSON.parse(ajax.responseText);

希望从这里您对正在发生的事情有一个很好的了解。尝试使用此功能,如果您仍需要帮助,请发表评论。

哦,我没有看到其他评论。如果你想制作一个 JSON 对象,你可以这样做。

var JSONobj = {};
JSONobj.field = something;

然后,您的 JSON 对象将如下所示:

JSONobj = { "field" : something };

如果要将 JSONobj 作为字符串传递,则对它进行字符串化很重要。我想这取决于您的 WEB_SERVICE 如何处理它,您可以这样做。

var stringJSON = JSON.stringify(JSONobj);

希望这可以帮助。

于 2012-08-22T08:20:55.150 回答