2016-01-28 49 views
1

我想通過 ajax請求到Eventbrite API獲取舊金山流行事件列表。這是代碼。Eventbrite API請求參數

var city = 'San Francisco'; 
var query = "token=" + token + "&venue.city=" + city + "&popular=" + true + "&location.within=" + "10mi" 
var $events = $("#events"); 

var settings = { 
    "async": true, 
    "crossDomain": true, 
    "url": "https://www.eventbriteapi.com/v3/events/?" + query, 
    "method": "GET", 
    "headers":{} 
} 

我也從其他城市獲得結果。如何設置參數才能從舊金山獲得結果?另外,我正在獲取單個事件的多個副本。有什麼辦法可以防止這種情況發生?

回答

0

對於API v3,您的查詢不正確:在測試您的查詢時,我收到來自Eventbrite API的錯誤。這些錯誤是由於使用不正確的查詢參數。例如「popular」不存在爲parameter。請務必通過他們的遊樂場https://www.eventbriteapi.com/v3/events/search?token='YOUR-OAUTH-TOKEN'來測試您的查詢。

僅限SF事件:除非在經度和緯度範圍內包含一個小的搜索半徑,否則沒有辦法在Eventbrite查詢中爲僅在SF中的事件設置參數。該方法可能會排除一些流行的SF事件。最好的方法是查詢所有SF區域事件,然後通過過濾出Venue城市不是舊金山的事件來操縱您獲取的數據。

熱門活動:要真正得到你需要知道有多少門票已售出的每個事件(private data.)相反,我們需要使用sort_by parameter在我們最初的查詢來獲得「最好的」熱門事件事件。不幸的是,'最好'在API中非常模糊,但我們必須合作。

重複事件:鑑於下面的查詢,你不會得到重複的事件。

嘗試下面的jQuery AJAX方法:

const sfSettings = { 
    url: 'https://www.eventbriteapi.com/v3/events/search/', 
    data: {token: 'YOUR-OAUTH-TOKEN', sort_by: 'best', 'location.latitude': 37.7749, 'location.longitude': -122.4194, expand: 'venue'}, 
    crossDomain: true, 
    method: 'GET' 
} 

$.ajax(sfSettings).done(function(eventObject){ 
    // All SF Area Events (Paginated by 50. Will only return first page.) 
    const events = eventObject.events; 
    // Create a new array of events whose venue is specifically in SF 
    const sfEvents = events.filter(function(event){ 
    return event.venue.address.city === 'San Francisco'; 
    }); 
});