2012-03-04 21 views
0

我想通過在我的ASP MVC地圖應用程序上使用他們的無用戶API公式來訪問Foursquare上的場地,但無法管理它的工作。如何通過JSON訪問「Foursquare Userless Venues API v2」?

我的代碼是:

var fsObj = []; 
var url = 'https://api.foursquare.com/v2/venues/search?ll=' + lat + ',' + lng + '&query=' + type + '&radius=' + distance + '&intent=browse&client_id=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&client_secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&v=20120304'; 
$.getJSON(url, {}, function (data) { 
    venues = data['response']['groups'][0]['items']; 
    for (var i = 0; i < venues.length; i++) { 
     var fsRes = { 
      'Id': venues[i]['venue']['id'], 
      'Name': venues[i]['venue']['name'], 
      'Latitude': venues[i]['venue']['location']['lat'], 
      'Longitude': venues[i]['venue']['location']['lng'], 
      'Type': type, 
      'Vicinity': venues[i]['venue']['location']['address'], 
      'Reference': "Foursquare" 
     }; 
     fsObj.push(fsRes); 
    } 
    printMap(fsObj); 
}); 

正如你可能明白了:我正在緯度,從地圖LNG和距離值。還試圖打印endresult。

當我在瀏覽器上使用相同的網址時,它會得到結果,但在此代碼中不幸的不是。它讓我認爲,當我嘗試在printMap行放置一個斷點時,json請求可能並不好;它甚至不停止。難道我做錯了什麼?

任何幫助將不勝感激。非常感謝你。

新方法,但仍沒有機會:

var getFoursquare = function (p, g, q) { 
    var lat = p.lat(); 
    var lng = p.lng(); 
    var url = 'https://api.foursquare.com/v2/venues/search?ll=' + lat + ',' + lng + '&query=' + q + '&radius=' + g + '&intent=browse&client_id=XXXXXXXXXXXXXXXX&client_secret=XXXXXXXXXXXXXXXXXXXXXXXXXX&v=20120305'; 
    $.getJSON(url, function (data) { 
     $.each(data.response.venues, function (i, venues) { 
      fsRes = { 
       'Id': venues.id, 
       'Name': venues.name, 
       'Latitude': venues.location.lat, 
       'Longitude': venues.location.lng, 
       'Type': q, 
       'Vicinity': venues.location.address, 
       'Reference': "Foursquare" 
      }; 
      fsObj.push(fsRes); 
     }); 
     printMap(fsObj); 
    }).error(function (event, jqXHR, ajaxSettings, thrownError) { alert(event); alert(jqXHR); alert(thrownError); }); 
} 
+0

你能提供更多的細節嗎?響應看起來像什麼,控制檯上有錯誤嗎? – f0x 2012-03-04 11:54:47

+0

當我在瀏覽器上使用相同的網址時,它會得到結果,但在此代碼中不幸的不是。它讓我認爲,當我嘗試在printMap行放置一個斷點時,json請求可能並不好;它甚至不停止。難道我做錯了什麼? – MrGorki 2012-03-04 11:58:05

+0

這是一個跨域調用,最有可能設計爲從服務器代理使用。也許可以使用Chrome瀏覽器執行'console.log(data)'並查看控制檯以查看請求發生了什麼。然而,我懷疑它是因爲SOP而被阻止的。 http://en.wikipedia.org/wiki/Same_origin_policy在討論SOP和JavaScript調用時,有很多答案。 – f0x 2012-03-04 13:46:33

回答

0
venues = data['response']['groups'][0]['items']; 

有一個在響應對象沒有 '基團' 字段。你想

venues = data['response']['venues']; 

你可能寫了這個代碼,你開始指定版本ID之前。所有團體在2011年6月份被撤銷,因此所有帶有最新版本ID的電話都不再返回。

+0

謝謝你的回答,但我已經嘗試了不同的代碼,但仍然沒有機會:(我要添加我的另一種方法來回答這個問題 – MrGorki 2012-03-06 14:47:51

+0

你可以添加一張支票,重新獲得一個有效的json對象之前,你嘗試解析它? – akdotcom 2012-03-06 21:04:24

+0

抱歉,這個晚回覆。我已經把一個檢查,它給出了錯誤代碼405:方法不允許 – MrGorki 2012-03-09 18:40:53