2012-05-25 43 views
0

Load when the browser is open如何从API响应中提取部分JSON?

这就是我以前的问题涉及到这个话题。

我的问题是,服务器API我使用增加了新的项目列表,正如我在前面的问题我不是很熟练的API或jQuery的规定,因此,我想知道你能建议更换我阅读有关这个​​和实际解决方案。我需要这样做,因此js使用的字段只有{“name”:“Arthas”,“slug”:“arthas”,“build”:“12340”,“status”:1}而不是其他字段。

许多在此先感谢。

这是API - >http://api.neverendless-wow.com/server-status

{"servers":[{"name":"Arthas","slug":"arthas","build":"12340","status":1},{"name":"Deathwing","slug":"deathwing","build":"13623","status":1}],"alerts":[]} 

这是我目前的js

function checkStatus() 
{ 
    jQuery.getJSON("http://api.neverendless-wow.com/server-status",function(data){ 
    if (data.status == '1')  {jQuery('#ServStat').addClass('online').removeClass('offline').attr('label','Online');} 
    else  {jQuery('#ServStat').addClass('offline').removeClass('online').attr('label','Offline');}}); 
} 
checkStatus(); 
{ 
    setInterval(changeState, 300000) 
} 

回答

0

您需要使用数据作为数组(数据[0]),因此您的代码如下如下:

function checkStatus() 
{ 
    jQuery.getJSON("http://api.neverendless-wow.com/server-status",function(data){ 
     if (data.servers[0].status == '1') { 
      jQuery('#ServStat').addClass('online').removeClass('offline').attr('label','Online'); 
     } 
     else { 
      jQuery('#ServStat').addClass('offline').removeClass('online').attr('label','Offline'); 
     } 
    }); 
} 

checkStatus(); 
{ 
    setInterval(changeState, 300000) 
} 
+0

它没有工作,它什么都不做,甚至没有给我一个错误 – Minnen

+0

尝试data.servers [0] .STATUS而不是数据[0] .STATUS。 – Shant

+0

它工作!非常感谢@Shant,我想如果我想用第二部分{“name”:“Deathwing”,“slug”:“deathwing”,“build”:“13623”,“status”:1}而不是数据。服务器[0] .status我将不得不使用data.servers [1] .status – Minnen

0

我可能会像这样的东西去:

// check server status 
function checkStatus() 
{ 
    $.getJSON(server_url, function(data) { 

     // reset 
     var mode = "Offline"; 
     $('.status').removeClass('online').addClass('offline'); 

     // is available? 
     if (data !== null && data.servers !== null && data.servers[0].status === 1) { 
     mode = "Online";   
     $('.status').removeClass('offline').addClass('online'); 
     } 

     // Extract data from received JSON string is exists 
     extractData(data); 

     // set needed attributes 
     $('.status') 
     .attr('label', mode) 
     .text('Servers are ' + mode); 
    }); 
} 

现场演示available on JsBin