$ .get()函数在被触发时被调用三次,如何防止它

时间:2011-09-29 21:02:57

标签: php jquery ajax

我有一个名为myitem.html的主html页面,然后我使用ajax显示从itembox.php文件加载的itembox,而当我在itembox中向下滚动时,new.php文件中的新内容是附加在itembox的末尾,然而,itembox中的newcontent附加了thress time,它们都是相同的,我怎么能只追加一次,

这是itembox.php

中html代码的一部分
<div id="itemscrollbox">
    <ul id = "scroll">
        <li>0 item</li>
        <li>0 item</li>
        <li>0 item</li>
        <li>0 item</li>
        <li>0 item</li>
    </ul>
</div>

这是在itembox.php文件中滚动更新的javascript代码的一部分:

function scroll() {
    var scrolltop = $('#itemscrollbox').attr('scrollTop');
    var scrollheight = $('#itemscrollbox').attr('scrollHeight');
    var windowheight = $('#itemscrollbox').attr('clientHeight');
    var scrolloffset = 0;
    if (scrolltop >= (scrollheight - (windowheight + scrolloffset))) {
        var ID = $("#myscroll li:last").attr("id");
        $('#status').text('Loading more items...');
        $.get('picturedata.php', 'id=' + ID + '', function(newitem) {
            $('#scroll').append(newitem);
            updateitemstatus();
        });
    }
    setTimeout('scroll();', 2500);
}

这是new.php文件中代码的一部分:          

  • 第一项
  •          
  • 第二项
  • 输出应该给我:

    first item
    second item
    

    但它给了我:

    first item
    second item
    first item
    second item
    first item
    second item
    

    任何人都可以告诉我如何解决这个问题,非常感谢!

    这里是滚动函数的调用方式:

         $(document).ready(function(){
    
        updateitemstatus();
    
    
       scroll();
           });
    

    我假设因为主要的html页面是myitem.html在其中加载itembox,而itembox在向下滚动时附加来自new.php的新内容,所以函数$ .get被调用三次,但我无法'弄清楚如何避免这种情况。

    1 个答案:

    答案 0 :(得分:0)

    在追加之前,你应该$.clear()你的结果div。

    $('#scroll').clear();
    
    $.get('picturedata.php', 'id='+ ID+'', function(newitem){
        $('#scroll').append(newitem);
        updateitemstatus();
    });