2015-02-06 136 views
2

我想使用vanilla JavaScript來訪問一些MeetUp API數據。我在我的網站上使用以下代碼:從外部JavaScript訪問JSON數據

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: Unexpected token :

我相信這是因爲返回JSON格式。我該如何解決這個問題,但同時仍然可以訪問JSON數據。任何幫助非常感謝。

實例鏈接:http://jsfiddle.net/londonfed/7ms44ft6/

+0

你使用這個:http://vanilla-js.com/? – 2015-02-06 11:56:37

+0

不熟悉該網站。我的意思只是簡單的javascript :-) – londonfed 2015-02-06 12:43:21

回答

4

由於聚會API支持回調參數,創建一個全局函數(窗口)和回調參數設置爲函數名稱:

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'); 
+0

感謝Bouke。鍛鍊了魅力。請你可以查看我的帖子編輯。 – londonfed 2015-02-06 11:35:26

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是您需要循環的數組。

+0

感謝Andy,和Bourge的回答一樣,它運作良好。 – londonfed 2015-02-06 11:41:01