首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax调用循环,Ajax jQuery

Ajax调用循环,Ajax jQuery
EN

Stack Overflow用户
提问于 2012-02-12 02:12:09
回答 2查看 739关注 0票数 3

我在这里需要和建议。

AJAX (使用jQuery)认为,我遇到了这种情况,试图获取一些JSON数据。

我的想法是,我需要更多的数据,而不是1或2个Ajax调用来获取我所需要的所有数据。

因此,我需要进行多个Ajax调用,并试图找到最佳的方法(最佳实践)。

我最先想到的一个想法是这样的(它可以有一些语法错误,甚至更糟的东西,目前正在寻找一个逻辑):

代码语言:javascript
复制
var dataArr = {
    page:0,
    pageSize : 1000
};


var StoreData = [];

var getSomeData = function () {

    $.ajax({
        type : "GET",
        url : URL,
        data : dataArr,
        dataType : "json",
        error : OnLoadError,
        success :function(data, status){

            StoreData.push[data];
            if(data.length){
                dataArr.page = dataArr.page + 1
                getSomeData();
            }

        }
    });
};

更多信息:

它可以是大约4-9个Ajax调用来获取所有数据,即(400-9000项)。

我测试了pageSize : 1000,并且工作正常,这样我就可以确定每次通话得到1000个条目。

所以,如果你能帮我提供一些建议,一些改变现有的一些更好的方法,甚至是一些例子,我真的很感激。

谢谢大家!

EN

回答 2

Stack Overflow用户

发布于 2012-02-12 02:35:59

完成后,您可以在服务器端设置一个标志,并将其放入成功函数的状态参数中。可以清理你的代码。否则,您可以简单地添加一个while循环,将您的调用定义为同步,并检查它是否在循环条件内完成。

票数 1
EN

Stack Overflow用户

发布于 2012-02-12 07:55:24

首先,您需要优化页面大小。将其定义为1000是一种简单的方法。如果应用程序的性能不重要,请不要阅读此答案的其余部分:)

我建议一种基于试验和错误的方法。做一个for循环,尝试不同的页码(比如20,50,100,500,1000,1500等)。然后记录每个页面大小的请求数量,以及所有请求的总时间。比较这些数字,并明智地选择您的页面大小。

其次,如果您能够计算来自服务器的元素数量,那么您最终可能不必发送不必要的请求。假设您正在获得4650个数据。你得到1000,+1000,+ 1000,+1000和+650。如果你不知怎么地发现你得到的不到1000,你不会发送最后的请求,是吗?假设响应格式类似于:

代码语言:javascript
复制
<li class='item'>XXX</li>
// All list items 
<li class='item'>YYY</li>

然后,用jquery计算li的数量,如果它小于您的页面大小,就意味着您得到了所需的所有数据。

最后,如果您知道您的总数据的长度超过4000,则可能需要异步发送前4个请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9245841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档