有人可以帮我使用livestream的api来制作跨域xml请求吗?

我正在尝试使用http://www.livestream.com/userguide/?title=Mobile_API#Requesting_a_mobile_stream上的livestream非常有用的移动API来发出xml请求。 我感兴趣的是isLive响应值。 我试图使用像这样的ajax请求

$.ajax({ type: "GET", url: "http://xproshowcasex.channel-api.livestream-api.com/2.0/getstream", datatype: "xml", success: function(xml){ //this is where I need help. This is what I would like to happen if (isLive == true) { //perform action } else { //perform other action } 

我正在使用http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/上的插件来制作跨域xml请求。 谁能告诉我这是否是实现这一目标的最有效方法? 我无法让它发挥作用。 当我运行console.log(xml)(可能不对)时,JS控制台显示了objectObject,我认为这意味着我需要解析数据? 如果有人能花点时间解释一下,我会很高兴。 非常感谢。

你很接近,你链接的post基本上描述了使用通过YQL的跨域请求进行页面抓取(你可以查看源代码以确切了解正在发生的事情)。 您可以使用jQuery通过常规JSONP请求剪切插件并完成相同的操作:

 function getCrossDomainJson(url, callback) { $.ajax({ url: "http://query.yahooapis.com/v1/public/yql?callback=?", data: { q: 'select * from xml where url="' + url + '"', format: "json" }, dataType: "jsonp", success: callback }); } 

基本上这个函数的作用是调用Yahoo的查询api并运行查询。 当响应返回时,返回的脚本调用jQuery提供的回调函数(这是使JSONP成为可能的原因)。

您正在使用的查询 (在q参数中指定)是针对XML提要的,因此您需要使用select * from xml来检索数据。 然后你可以告诉雅虎以JSON格式给你结果(我建议使用这个而不是XML; XML是命名空间)。

现在,当你调用这个函数时:

 getCrossDomainJson("http://xproshowcasex.channel-api.livestream-api.com/2.0/getstream", function(data) { // data is in JSON format: // make sure you can access the isLive property if (data && data.query && data.query.results && data.query.results.channel) { alert(data.query.results.channel.isLive); } }); 

回调函数接收通过YQL检索的JSON数据并找到isLive属性。

示例: http //jsfiddle.net/andrewwhitaker/YAGvd/