Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery结合Instagram API中的Ajax对象_Jquery_Ajax_Instagram_Instagram Api - Fatal编程技术网

jQuery结合Instagram API中的Ajax对象

jQuery结合Instagram API中的Ajax对象,jquery,ajax,instagram,instagram-api,Jquery,Ajax,Instagram,Instagram Api,我有两个问题。我的最终目标是请求Instagram并按标签过滤图像。Instagram不允许一次播放超过33张图片,所以现在我在另一张图片中加入了ajax。第一个请求获取图像,然后检查是否有更多图像,如果有更多图像,我将发出另一个请求。这是我的两个问题 #1-我无法将这两个对象合并为1。我已经尝试了所有我能想到或在网上找到的东西 var new_data = $.extend({}, data, data2); 及 不起作用,它只给了我一个对象 #2我下面的逻辑有点缺陷,因为这样最多只能获得6

我有两个问题。我的最终目标是请求Instagram并按标签过滤图像。Instagram不允许一次播放超过33张图片,所以现在我在另一张图片中加入了ajax。第一个请求获取图像,然后检查是否有更多图像,如果有更多图像,我将发出另一个请求。这是我的两个问题

#1-我无法将这两个对象合并为1。我已经尝试了所有我能想到或在网上找到的东西

var new_data = $.extend({}, data, data2);

不起作用,它只给了我一个对象

#2我下面的逻辑有点缺陷,因为这样最多只能获得66张图像(2张请求,每张33张图像)。我真正需要的是在某种循环中使用ajax。但我不知道该怎么做

var userid = '#######';
var token = '############';
var url = 'https://api.instagram.com/v1/users/' + userid + '/media/recent/?access_token=' + token + '&count=33';

$.ajax({
    type: 'GET',
    dataType: 'jsonp',
    cache: false,
    url: url,

    success: function(response){
        var paging = response.pagination;
        var data = response.data;
        console.log(data);

        if(paging.hasOwnProperty('next_url')){

            url = paging.next_url;

            $.ajax({
                type: 'GET',
                dataType: 'jsonp',
                cache: false,
                url: url,
                success: function(response2){
                    var data2 = response2.data;
                    var new_data = $.extend({}, data, data2);
                }
            });

        }else{
            // No more images so create image gallery
        }
    },
    error: function(){
        // error stuff
    }
});
这是我从Instagram得到的示例

已测试。它起作用了。试一试

var imageData = [];
$(function() {
    var url = 'https://api.instagram.com/v1/tags/smpspree/media/recent/?client_id=81e3d3f35c8a4438964001decaa5a31f&count=11'; 

    getData(url, function() {
        for (var i in imageData) {
            console.log(imageData[i])
        }
    }); 

    function getData(url, callback){ 
        $.ajax({ 
            type: 'GET', 
            dataType: 'jsonp', 
            cache: false, 
            url: url, 
            success: function(response){ 
                console.log(response.data)
                imageData = imageData.concat(response.data)
                var paging = response.pagination; 
                if (paging.hasOwnProperty('next_url')) { 
                    getData(paging.next_url, callback) 
                } else {
                    callback.call();
                } 
            } 
        }); 
    }

})

如果您试图连接两个数组的元素,那么您使用的
$.extend
是错误的

#1为了积累数组的内容,可以使用
array.prototype.concat
函数。 例如:

var new_data = data.concat(data2);
注意:
$.extend
用于合并内容。看

#2Instagram在其所有响应中都包含分页键。您可以在回调中使用它来触发另一个ajax请求。请参见中的分页


注意:速率限制适用于:对于经过身份验证的呼叫,每个令牌5000/小时。请参见已编辑的。现在应该行了你解决问题了吗?如果是的话,请记下我的答案,因为我付出了很多努力。谢谢谢谢你的第#1号-我没有意识到这些对象是在一个数组中,我尝试了所有我能找到的连接对象的方法,而我所需要的只是连接两个数组!“在我的回调函数中”是什么意思?你是说我不需要像现在这样多个ajax调用吗?你能给我一个如何使用回调函数的例子吗,我想不出来是的Instagram只允许你得到33,但它默认为20,所以33是用来设置最大值的。在你的代码示例中,我得到了错误,一个是你缺少了(在你的if之后,不确定其他的if错误和next_url错误被修复了。你得到了什么类型的错误?它与images.push(response.data)相关),我相信它说图像不是一个功能,它是一个未定义的功能,它不是一个功能。我认为这是可行的,给我更多的时间来测试它,看看它是否返回预期。比我所尝试的要干净得多。
var new_data = data.concat(data2);