从外部JavaScript访问JSON数据

时间:2015-02-06 11:21:29

标签: javascript json meetup

我想使用vanilla JavaScript来访问一些MeetUp API数据。我在我的网站上使用以下代码:

function addScript(src) {
    console.log(src);
    var s = document.createElement( 'script' );
    s.setAttribute( 'src', src );
    document.body.appendChild( s );
}

addScript('https://api.meetup.com/2/groups?callback=?&sign=true&member_id=8377069&page=20&api&key=API_KEY_GOES_HERE&only=name,link');

我使用脚本标记来访问数据以避免跨域问题。我很欣赏这可以使用jQuery解决,但我不想使用任何外部库。

以上代码返回此错误:

  

Uncaught SyntaxError:意外的令牌:

我相信这是因为返回了JSON格式。我该如何解决这个问题,但同时仍然可以访问JSON数据。任何帮助非常感谢。

示例链接:http://jsfiddle.net/londonfed/7ms44ft6/

2 个答案:

答案 0 :(得分:4)

由于meetup API支持回调参数,因此创建一个全局函数(在窗口中)并将callback参数设置为函数名称:

function addScript(src) {
    console.log(src);
    var s = document.createElement( 'script' );
    s.setAttribute( 'src', src );
    document.body.appendChild( s );
}

// Callback for loading api data:
window.apiCallback = function(data) {
     // do what you want with the data
     alert(data.results[0].name);
}
addScript('https://api.meetup.com/2/groups?callback=apiCallback&sign=true&member_id=8377069&page=20&api&key=API_KEY_GOES_HERE&only=name,link');

答案 1 :(得分:1)

您需要在URL中指定一个回调参数,该参数与将用于处理返回数据的函数名称相同:

function processJSONP(json) {
  console.log(json.results);
}

addScript('https://api.meetup.com/2/groups?callback=processJSONP&sign=true&member_id=8377069&page=20&api&key=5746c1b12324669953258703b11&only=name,link');

请记住,results是一个需要循环的数组。