Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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 处理多个AJAX调用_Jquery_Ajax_Promise - Fatal编程技术网

Jquery 处理多个AJAX调用

Jquery 处理多个AJAX调用,jquery,ajax,promise,Jquery,Ajax,Promise,下面的代码使用AJAX从几个不同的URL中提取JSON数据,我希望将它们存储到单独的数组中。以下是一个示例: var var1 = $.ajax({ url: FEED1, dataType: 'jsonp', crossDomain: true, success: function (data) { if (data) { ItemAry1 = data.posts; } } }); var var

下面的代码使用AJAX从几个不同的URL中提取JSON数据,我希望将它们存储到单独的数组中。以下是一个示例:

var var1 = $.ajax({
    url: FEED1,
    dataType: 'jsonp',
    crossDomain: true,
    success: function (data) {
        if (data) {
            ItemAry1 = data.posts;
        }
    }
});
var var2 = $.ajax({
    url: FEED2,
    dataType: 'jsonp',
    crossDomain: true,
    success: function (data) {
        if (data) {
            ItemAry2 = data.posts;
        }
    }
});
在我的代码中,我有几个这样的代码。每个数组都有相同的精确数据这一问题。甚至FEED1和FEED2都是指向不同数据的URL。

创建一个函数

var serviceURL = "http://www.example.com";
var itemArrays = {};

function getFeed(category_id){

    return $.ajax({
        url: serviceURL,
        data: {
            "json":"get_category_post",
            "category_id":category_id,
            "count": 25
        },
        dataType: 'jsonp',
        crossDomain: true,
        success: function (data) {
            if (data) {
                itemArrays[i] = data.posts;
            }
        }
    });
}

var feedPromises = [];
for (var i = 0, count = 9; i < count; i++){
    //start the process to get all the feeds and save their ajax promises into an array
    feedPromises.push(getFeed(i));
}

// wait until all the feeds return data to continue
$.when.apply(this, feedPromises)
    .done(function(){
        // when all the data calls are successful you can access the data via
        itemArrays[0];
        itemArrays[1];
        console.log(itemArrays);
    });
var serviceURL=”http://www.example.com";
var itemArrays={};
函数getFeed(类别\u id){
返回$.ajax({
url:serviceURL,
数据:{
“json”:“获取类别文章”,
“类别id”:类别id,
“计数”:25
},
数据类型:“jsonp”,
跨域:是的,
成功:功能(数据){
如果(数据){
itemArrays[i]=data.posts;
}
}
});
}
var=[];
对于(变量i=0,计数=9;i
感谢@Patrick Gunderson,我最终使用了以下内容:

function get_articles(category_id) {
        console.log('running ' + category_id);

        var url_addition = "?json=get_category_posts&category_id=" + (category_id + 1);
        var url_count = "&count=25";
        var serviceURL = "http://www.example.com/" + url_addition + url_count;

        console.log(serviceURL);

        return $.ajax({
            url: serviceURL,
            dataType: 'jsonp',
            crossDomain: true,
            success: function (data) {
                if (data) {
                    itemArrays[category_id] = data.posts;
                }
                else{
                    console.log("Failed category_id: "+ category_id);
                }
            }
        });
    }

    var feedPromises = [];
    for (var i = 0, count = 10; i < count; i++) {
        //start the process to get all the feeds and save their ajax promises into an array
        feedPromises.push(get_articles(i));
    }
    $.when.apply(this, feedPromises)
        .done(function () {
            // when all the data calls are successful you can access the data via
            console.log(itemArrays);
        });

    console.log(feedPromises);
函数获取文章(类别id){
console.log('running'+category_id);
var url_addition=“?json=get_category_posts&category_id=“+(category_id+1);
var url_count=“&count=25”;
var serviceURL=”http://www.example.com/“+url\u添加+url\u计数;
日志(serviceURL);
返回$.ajax({
url:serviceURL,
数据类型:“jsonp”,
跨域:是的,
成功:功能(数据){
如果(数据){
itemArrays[category_id]=data.posts;
}
否则{
console.log(“失败的类别标识:+类别标识”);
}
}
});
}
var=[];
对于(变量i=0,计数=10;i
我仍然得到相同的结果。您得到了什么结果?您期望得到什么结果?每个阵列的所有结果都是相同的。每个数组应该获得不同的数据,因为我为每个调用使用不同的URL。URL是json查询。一个是www.example.com/?json=get\u category\u post&category\u id=2&count=25,另一个是?json=get\u category\u post&category\u id=3&count=25,id一直更改到9。当我把每个URL放到浏览器中时,它们都会调出不同的数据(这就是我想要的)。我希望这样可以将每组数据存储在不同的数组中。我更新了代码,这样现在就可以将每组数据保存在不同的数组中(在一个主数组中)。您可以使用
$.ajax()
data
参数设置参数,jQuery将生成(并追加)查询字符串将为您创建服务url,您不需要像现在这样显式地构建整个url。