1

我正在做一个从 sql 表中提取大量数据的查询。我想实现一个无限滚动功能,这样一次只能提取 25 条左右的记录。

不过我遇到了一些麻烦。

当用户向下滚动时调用此查询。jquery 将放置在页面上的最后一条记录的最后一个 id 发布到 php;

//ie, this js pulls the id 
var last_order_number = $('.order_number_divs:last').attr('id');

//from this div
<div id="2476" class="order_number_divs">   1121310  </div>

我想,如果我在页面上再选择两个id大于前一个id的结果,我肯定会得到以下两个结果。但是,我每次都得到相同的两个结果。

SELECT 
    id,
    order_number
    FROM sales_orders
    WHERE id > '$last_id'
    ORDER BY id ASC
    LIMIT 2

这是通过模板运行数据以填充 div 的 jquery。由于vkTemplate不支持追加,所以一旦用内容填充了div,我把刚刚填充的div的id去掉,把id给它下面的div,这样下次有滚动的时候,内容将进入那个 div。

$(window).scroll(function () {

    if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {



        var last_order_number = $('.order_number_divs:last').attr('id');

        console.log(last_order_number);
        $.ajax({
            type: "POST",
            async: false,
            url: "queries/privileged_search_more_content.php",
            data: "user=" + "<?=$_COOKIE['username']?>" + "&last_order_number=" + last_order_number,
            dataType: "json",
            success: function (data) {
                console.log(data);

                $('#INT-order_information_container').vkTemplate("templates/get_orders_initial_template.tmpl?" + <?=time()?> , data, function () {

                $('#INT-order_information_container').removeAttr('id');
                $('#template_div_next').removeAttr('id')
                                       .attr('id', 'INT-order_information_container');

                });
                console.log($.active);
            }
        });

    }
    });

你知道为什么同样的两条记录被一遍又一遍地拉下来吗?

非常感谢!

我发现的这个滚动功能似乎也可以上下调用。但这是一个不同的问题。只是说让你知道我至少知道这么多。

4

1 回答 1

1

vkTemplate 确实支持追加。看看 vkTemplate 主页

http://www.eslinstructor.net/vktemplate/

有菜单项“附加技术”。

使用 vkTemplate 实现附加的另一种方法是自定义此插件。很简单:打开代码并找到 #94,102,117 行 https://github.com/vkiryukhin/vkTemplate/blob/master/vktemplate.js

$(elm).empty().append(. . .)

并从此表达式中删除 empty()。

希望这可以帮助,

-瓦迪姆

于 2012-08-15T05:12:18.060 回答