【问题标题】:Making a step-by-step ajax request发出逐步的 ajax 请求
【发布时间】:2013-02-03 15:52:26
【问题描述】:

我正在考虑如何动态更改 div 的内容。所以,这里是ajax请求:

$.ajax({
    url:'/foos',
    cache: false,
    type: 'get',

}).done( function( foo_array ) {
    for( foo in foo_array ) {
        $('#foo-container').append('<div class="foo-var">'+foo+'</div>');
    }
});

所以基本上,这个 ajax 会附加来自服务器的所有 foo-var div,但是如果 foo_array 太长或很大的数组会出现问题,因为我认为这需要越来越多的时间取决于 foo_array 的长度

如何逐个追加??,如何逐个查询并追加到 foo-container 中,而不是查询所有 foo 并进行迭代??

我想做这样的事情

if(foos.hasNext()){ $.ajax..... append(foo)....}

foos 是一个由 mongodb 数据库中的许多文档组成的数组,所以我无法获得数组的长度,因为取决于查询的 find() 参数..

我正在使用 nodejs、mongodb、expressjs 和 jquery 进行 ajax

对不起,我的英语不好,谢谢大家!

编辑 2

这是一个mongodb中的数据示例

{category:1, name:'robert',personal:true,option:'class'}
{category:1, name:'alfredo',personal:false,option:'class'}
{category:4, name:'ricardo',personal:true,option:'class'}
{category:1, name:'genaro',personal:true,option:'class'}
{category:2, name:'andres',personal:false,option:'class'}
{category:1, name:'jose',personal:true,option:'class'}


db.collection.find({personal:true}) // gives me 4 documents
db.collection.find({option:'class'}) // gives me 6 documents
db.collection.find({category:4}) // gives me 1 document

不知道游标能得到多少个文档,需要一一收费,因为databse中有5097841个文档,所以ajax返回所有信息需要很长时间,需要一一查询if hasNext() 在 mongodb 的游标中

【问题讨论】:

  • 我建议进行某种分页,每次请求加载 10-15 个项目
  • 我不能使用分页,我必须从数据库中收取所有文件
  • 如果foo_array 确实是一个您不想使用for/in 的数组。显示数据样本。关于分页的评论也可以通过多个AJAX请求来完成$.each很容易实现api.jquery.com/each
  • 我可以使用 socket.io 来做到这一点吗?我正在阅读许多在 socket.io 上发送变量的方法
  • 可能有多种方法可以解决这个问题。 (1) 基于数据库的分页,您在客户端维护数据的起始索引和结束索引。您发送这些索引以获取下一组数据 (2) 服务器端分页,您从数据库中获取所有数据并执行后续提取 (3) 基于 Javascript 的分页 - 您必须测试其性能。将数组存储为 Javascript 对象并根据获取的最后一个索引进行检索

标签: javascript ajax node.js mongodb jquery


【解决方案1】:

您可以使用跳过和限制,并且可以发出多个请求。就像分页一样。下面的语法可能会对你有所帮助

db.collection.find().skip(200).limit(100);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2015-07-08
    • 2015-10-26
    • 2019-04-03
    • 2018-04-12
    • 1970-01-01
    相关资源
    最近更新 更多