2014-10-18 52 views
0

好的,我正在使用Foursquare的API,並且我可以很容易地獲得任何有單個項目的東西。所以我可以抓住名稱,號碼,評級等...使用getJSON從Foursquare獲取數組並存儲爲變量

我遇到的問題是獲取數組中的任何內容。換句話說,如果有多個項目,我不知道如何返回所有這些項目。 所以這是代碼的樣子:

<script> 
function getinfo(venueAPI) { 
      $.getJSON(venueAPI, function(data) { 
       console.log(data); 
       name = data.response.venue.name; 
       phone = data.response.venue.contact.formattedPhone; 
       $('#content').empty().append('<h1>' + name + '</h1>', b, '<a href="tel:' + phone + '">' + phone + '</a>'); 
      }); 
     } 
</script> 

的「venueAPI」字符串是我找了業務的API端點。

我試過使用$ .each,而且我一直在尋找谷歌,就像一個瘋狂的人試圖解決這個問題。回顧一下,我試圖從Foursquare(照片,評論等)抓取一個數組並將其存儲在一個字符串中。

任何幫助將不勝感激。

謝謝!

編輯:這是用getinfo函數觸發的API調用:onclick =「getinfo('https://api.foursquare.com/v2/venues/4fd9e1f9d5fb0913decc6c9c?oauth_token=YCCKUVRO4J4MZQ121E4VTNHBRM4YH0FAVROW0KQ2OSJ32GRV&v=20141012');」

這裏是返回JSON:link

更新代碼:

b = '<br/>'; 

     function getinfo(venueAPI) { 
      $.getJSON(venueAPI, function(data) { 
       $(function() { 

        var arr = []; 
        var photoarr = []; 

      function getinfo() { 
       console.log(data); 
       arr = data.response.venue; 
       $('#content').append(arr.id + '<br/>'); 
       $('#content').append(arr.name + '<br/>'); 
       photoarr = arr.photos.groups[0].items; 
       photoarrlength = arr.photos.groups[0].items.length; 
       console.log(photoarr); 
       console.log(photoarrlength); 
       $('#content').append('<br/> PHOTOS <br/>'); 
       for (var i = 0; i < photoarrlength ; i++) { 
       $('#content').append(photoarr[i].id + '<br>'); 
       } 
       } 
      getinfo();  
}); 
      }); 
     } 

這將返回:

4fd9e1f9d5fb0913decc6c9c 日暮牡蠣有限公司

照片 51db48a5498eb7682980e774 5071c5b2e4b0559b4dfd60b5 51cdc340498ed3d72134074f 51c9de9e498e6be2f81a19ba 50ecc042e4b0e13343ad9549 51d09fa8498efa529e38b2a5

這是我所需要的信息。現在我只需要確保我可以複製它並理解它爲我需要抓取的其他值所做的工作。

回答

0

請提供示例調用。

實現此目的的一個選擇可能是確定數組長度,然後使用for循環。

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/length

使用jQuery,檢查jQuery.each()。

http://api.jquery.com/jquery.each/

編輯:

實施例:

四角API調用:

https://api.foursquare.com/v2/venues/explore?near=Berlin&oauth_token=YOUR_OATH_KEY&v=20141018

響應此:

http://lab.sourcloud.com/stackoverflow/26435383/response.js

Bascially這是你必須在getJSON的回調函數中做的事情。

$(function() { 
var data = response; 
var arr = []; 

function getinfo() { 
       //console.log(data.response.groups[0].items); 
       arr = data.response.groups[0].items; 
       arrlength = data.response.groups[0].items.length; 
       for (var i = 0; i < arrlength ; i++) { 
       $('#content').append(arr[i].venue.name + '<br/>'); 
       } 
     } 
getinfo();  
}); 

http://jsfiddle.net/iambnz/wmpfu50w/

回答根據您的JSON響應:

檢查爲 - 循環。

$(function() { 
var data = josh; 
var arr = []; 
var photoarr = []; 

    function getinfo() { 
        console.log(data); 
        arr = data.response.venue; 
        $('#content').append(arr.id + '<br/>'); 
        $('#content').append(arr.name + '<br/>'); 
        photoarr = arr.photos.groups[0].items; 
        photoarrlength = arr.photos.groups[0].items.length; 
        console.log(photoarr); 
        console.log(photoarrlength); 
        $('#content').append('<br/> PHOTOS <br/>'); 
        for (var i = 0; i < photoarrlength ; i++) { 
        $('#content').append(photoarr[i].id + '<br>'); 
        } 
      } 
    getinfo();  
}); 

http://jsfiddle.net/iambnz/tgwvwfrg/

編輯3(根據您的回答,代碼清理)

function getinfo(venueAPI) { 
     $.getJSON(venueAPI, function(data) { 
       var arr = []; 
       var photoarr = []; 
       arr = data.response.venue; 
       $('#content').append(arr.name +'<br/>'); 
       photoarr = arr.photos.groups[0].items; 
       photoarrlength = arr.photos.groups[0].items.length; 
       $('#content').append('<br/> PHOTOS <br/>') 
        for (var i = 0; i < photoarrlength; i++) { 
         $('#content').append(
          '<img src="' + 
          photoarr[i].prefix + 
          photoarr[i].width + 
          'x' + photoarr[i].height + 
          photoarr[i].suffix + 
          '">'); 
        } 
     }); 
} 
+0

下面是使用JSON的一個例子,我得到一個引擎收錄:[鏈接](http://pastebin.com/embed_js.php?i= NsDgJvuQ) – 2014-10-18 19:40:14

+0

檢查我編輯的答案。 – devbnz 2014-10-18 20:18:05

+0

謝謝!我能夠把它整理出來,並且我可以用我需要的任何其他項目複製代碼。你是一個生活救星:) – 2014-10-18 21:13:05

0

下面是最終代碼之後BNZ幫我正確的答案。它抓住了從場地的所有公開的照片,它們顯示:

function getinfo(venueAPI) { 
     $.getJSON(venueAPI, function(data) { 
      $(function() { 
       var arr = []; 
       var photoarr = []; 

       function getinfo() { 
        console.log(data); 
        arr = data.response.venue; 
        $('#content').append(arr.name + 
         '<br/>'); 
        photoarr = arr.photos.groups[0].items; 
        photoarrlength = arr.photos.groups[ 
         0].items.length; 
        console.log(photoarr); 
        console.log(photoarrlength); 
        $('#content').append(
         '<br/> PHOTOS <br/>'); 
        for (var i = 0; i < 
         photoarrlength; i++) { 
         $('#content').append(
          '<img src="' + 
          photoarr[i].prefix + 
          photoarr[i].width + 
          'x' + photoarr[i].height + 
          photoarr[i].suffix + 
          '">'); 
        } 
       } 
       getinfo(); 
      }); 
     }); 
    } 
+0

檢查我編輯的答案,我做了一個清理你的代碼。 jqready,getinfo()在這種情況下沒有意義。祝你的項目好運。 – devbnz 2014-10-19 10:31:25

相關問題