2017-06-06 86 views
0

你好的开发伙伴们,组委会检索JSON数据从YQL

最近,我已经放弃了包括AJAX请求一个项目,由于CORS,但我终于找到YQL围绕工作。我终于想出了如何检索我的JSON数据。现在我正试图弄清楚如何访问这些数据并按照我想要的方式进行组织。这是我的代码目前。

var errormsg = "There was an ERROR I am sorry"; 
var requestURL = "https://www.tip.it/runescape/json/hiscore_user?old_stats=1&rsn=" 

$(document).ready(function() { 
    $('#retrievestats').click(function() { 
     var RSname = document.getElementById('Userinputform').value.toLowerCase(); 
     getUserData(RSname) 
    }); 
}); 


function getUserData(RSname, callback) { 
    var yql = 'https://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + requestURL + RSname + '"') + '&format=json&diagnostics=false&callback=?'; 

    if (!RSname) { 
     alert('Please enter a username'); 
     return false; 
    } 


    $.getJSON(yql, function(data){ 
     console.log(data); 
    }); 
} 

正如你看到的,我可以成功地查看我的数据,我的浏览器的控制台,但它看起来好像是我所能做的。有什么办法可以组织/分离数据吗?目前,JSON给我信息,以这样的方式

"orig_rsn":"zezima","rsn":"zezima","stats":{"overall":{"level":1280,"exp":12426850},"attack":{"level":71,"exp":815941},"defence":{"level":70,"exp":737635},"strength":{"level":70,"exp":737679},"constitution":{"level":69,"exp":697918},"range":{"level":43,"exp":53916},"prayer":{"level":46,"exp":68845},"magic":{"level":43,"exp":54901},"cooking":{"level":77,"exp":1560984},"woodcutting":{"level":73,"exp":1002436},"fletching":{"level":68,"exp":657325}, 

我猜我问的是我怎么能接受JSON数据,并用它来动态替换根据他们的名字下表中的值

    <tr id=> 
        <td id=Fish>Fishing</td> 
        <td id=Fishlvl>1</td> 
        <td id=Fishexp>1</td> 
        </tr> 
        <tr id=> 
        <td id=FM>Firemaking</td> 
        <td id=FMlvl>1</td> 
        <td id=FMexp>1</td> 
        </tr> 
        <tr id=> 
        <td id=Craft>Crafting</td> 
        <td id=Craftlvl>1</td> 
        <td id=Craftexp>1</td> 
        </tr> 
        <tr id=> 
        <td id=Smith>Smithing</td> 
        <td id=Smithlvl>1</td> 
        <td id=Smithexp>1</td> 
        </tr> 

回答

0

一个简单的解决方案是使用jQuery并使用模板函数创建您的HTML。

var data = { 
    "orig_rsn":"zezima", 
    "rsn":"zezima", 
    "stats": { 
    "overall": {"level":1280,"exp":12426850}, 
    "attack":{"level":71,"exp":815941}, 
    "defence":{"level":70,"exp":737635}, 
    "strength":{"level":70,"exp":737679}, 
    "constitution":{"level":69,"exp":697918}, 
    "range":{"level":43,"exp":53916}, 
    "prayer":{"level":46,"exp":68845}, 
    "magic":{"level":43,"exp":54901}, 
    "cooking":{"level":77,"exp":1560984}, 
    "woodcutting":{"level":73,"exp":1002436}, 
    "fletching":{"level":68,"exp":657325} 
    } 
} 

$(document).ready(function() { 

    var createRow = function(skill, level, exp){ 
    return "<tr>" + 
       "<td id=" + skill + ">" + skill +"</td>" + 
       "<td id=" + skill + "lvl>" + level + "</td>" + 
       "<td id=" + skill +"exp>"+exp+"</td></tr>"; 
    }; 

    var createTable = function(data){ 
     var html = "<table class='solid'><th>Skill</th><th>Level</th>    <th>experience</th>" 
     for(var propt in data.stats){ 
     var skill = data.stats[propt]; 
     html+=createRow(propt,skill["level"],skill["exp"]); 
     } 
     html+="</table>"; 
     return html; 
    }; 

    $("#container").html(createTable(data)); 
}); 

当然,还有其他使用现代JS框架的方法。但是,如果你想使用jQuery,就是这样!

Pluker Example

+0

我只是做了一些调查,发现别人说一些关于现代JS框架。这些会是什么框架,仅仅使用它们会有好处?我是否必须更改我已经完成的任何工作来实现它们 – Bluestreak22

+0

另外,如何从我的ajax/yql请求中将我的JSON数据转换为变量,如上所述?谢谢 – Bluestreak22

+0

您的函数$ .getJSON以JSON格式获取数据。这与我在示例中使用的数据相同。像AngularJS这样的框架使得这个任务更简单。如果你正在从事一个专业项目,我真的建议你采用一些框架。 Ember.js,AngularJS和React.JS是最有名的。但是,只使用jQuery你可以做出惊人的事情。 –