使用javascript和GET请求从api url中提取JSON数据的最佳方法是什么?

时间:2016-11-26 03:17:00

标签: javascript json ajax eclipse get

我试图弄清楚如何向BandsInTown API发送请求并且能够从包含的返回JSON页面中提取一些元素(日期时间和地点纬度和经度)。音乐活动信息。我对JavaScript和Web开发都很陌生,所以非常感谢任何帮助!我用作请求的网址是:http://api.bandsintown.com/artists/Hippo%20Campus/events.json?lapi_version=2.0&app_id=music_matcher

我将实现更改名为的艺术家的灵活性。

我不确定是否应该添加' callback = 某些内容'网址中的参数是否也是。我已经查看了“请求”和“#39;请求'库通过Node.js,但我不完全确定如何让Node.js和npm通过Eclipse Neon(我正在使用的IDE)工作,所以我真的想让它保持简单并找到一个纯javascript解决方案,我可以直接在Eclipse中的脚本中实现。我不太了解如何提取JSON并在我的脚本中稍后将其称为results[0].venue.latitude(为了返回会场的纬度)或者其他任何结果'对象将被调用(这也是我的问题的一部分)。我是否需要将此信息放入对象中?

1 个答案:

答案 0 :(得分:0)

除了像这样的异步HTTP请求之外,我最终还使用了JSON.parse():

function httpGetAsync(theUrl, callback) { //theURL or a path to file
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
    if (httpRequest.readyState == 4 && httpRequest.status == 200) {
        var data = JSON.parse(httpRequest.responseText);
        if (callback) {
            callback(data);
        }                   
    }
};

httpRequest.open('GET', theUrl, true); 
httpRequest.send(null);
}

并称之为:

httpGetAsync(url, function(data) {
document.write(data[0].venue.latitude);
document.write(data[0].venue.longitude);
document.write(data[0].datetime);
});

但是,这种方法只允许我对api进行一次干净的调用。当我尝试使用一个使用不同url调用该函数的循环进行多次调用时,我的脚本似乎在第一个之后终止。因此,对于我的应用来说,这仍然是一个问题。