Firefox错误中的JQuery SYNC Ajax调用

时间:2012-05-13 21:59:10

标签: php jquery ajax firefox asynchronous

我做了一个无限滚动脚本,表现很好。但只是在Chrome和IE浏览器中。不幸的是它没有在firefox上执行同步调用,但仍然锤击服务器异步...意思是我得到了大量的内容,不应该被请求...因为我谷歌搜索并没有找到一个明确的解决方案对于我的问题所以我会问你们:

var endajax = 0;

$(window).scroll(function(){
    if (endajax == 0)
    {
        if($(window).scrollTop() + $(window).height() > $(document).height() - 405) 
    {
            $('#profilecontent').prepend('<div class="iloader bgtrans padding ui-corner-all" style="position: fixed; bottom: 20px; right: 80px;"><div class="ui-widget-content ui-corner-all padding"><img width="8" src="images/loader.gif" alt="" /> Inhalt wird nachgeladen, bitte einen Moment gedulden</div></div>');
        var firstid = $('.postbox').last().attr('name');    
        var lastid = $('.postid').last().val(); 
        var data = "firstid="+firstid+"&lastid="+lastid+"&uid=<?php echo $profileuser->id; ?>"; 
        setTimeout(function() {
            $('.iloader').remove();
        }, 2000);
        $.ajax({
        url: "modules/users/profile/profileposts.php",
        cache: false,
        type: "POST",
        async: false,
        data: data,
            success: function(data){
                if (data.length != 2) {
                      $('#profileposts').append(data).fadeIn('slow');
                }
                else
                {
                    endajax = 1;
                }                           
            },
        });
    }
}
});

1 个答案:

答案 0 :(得分:0)

也许在ajax调用之前锁定你的信号量?

if($(window).scrollTop() + $(window).height() > $(document).height() - 405) 
{
 endajax++;

然后

success: function(data){
            if (data.length != 2) {
                  endajax = 0;//or 1 depending on how you are locking this control out
                  $('#profileposts').append(data).fadeIn('slow');
            }