使用getJSON从Foursquare获取数组并将其存储为变量

时间:2014-10-18 01:12:03

标签: jquery arrays json api foursquare

好的,我正在使用Foursquare的API,我可以很容易地得到任何包含单个项目的内容。所以我可以获取名称,数量,评级等......

我遇到的问题是获取数组中的任何内容。换句话说,如果有多个项目,我无法弄清楚如何返回所有这些项目。 这就是代码的样子:

<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 Eventide Oyster Co。

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

这是我需要的信息。现在我只需要确保我可以复制它并理解它为我需要抓取的其他值做了什么。

2 个答案:

答案 0 :(得分:0)

请提供示例电话。

实现这一目标的一个选择是确定数组长度,然后使用for循环。

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

使用jquery,检查jQuery.each()。

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

编辑:

示例:

foursquare api call:

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

在这里回复:

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

基本上,这是你必须在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响应回答:

检查For循环。

$(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 +
                           '">');
                   }
       });
 }

答案 1 :(得分: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();
           });
       });
   }