【问题标题】:load content by ajax通过ajax加载内容
【发布时间】:2012-11-26 08:32:54
【问题描述】:

我已经创建了这个用于加载数据的 ajax 脚本。

$("#submit").click(function(e){
    e.preventDefault()  
    var loading = "<img src='/images/loading.gif' alt='Loading...' />";
    var scrolltop=$('#scrollbox').attr('scrollTop');
    var scrollheight=$('#scrollbox').attr('scrollHeight');
    var windowheight=$('#scrollbox').attr('clientHeight');
//  var post = $(this).attr("name") + "=" + $(this).val();
    var form_data = $('#search_form').serialize();// + "&" + post ;

    var scrolloffset=20;
    $('#search').html(loading);
    $.post("dosearch.php",form_data,function(newitems) {
        $('#content').append(newitems);
            });
        if(scrolltop>=(scrollheight-(windowheight+scrolloffset))){
            $.post("dosearch.php",form_data,function(newitems) {
        $('#content').append(newitems);
            });
        }     
        });
});

此脚本将获取表单数据并将它们序列化并将它们发布到dosearch.php,之后 dosearch 将发布我们搜索 Limited 0,6 的数据。当滚动条到达结果 div 的底部时,我想获取更多内容,因此我创建了这个函数,它将再次获取我们的表单数据和结果 div 中的 div 数量......然后使用这个 div 结果以防万一限制 $number,6。

function scroll_result(form_data){
    var loading = "<img src='/images/loading.gif' alt='Loading...' />";
    var scrolltop=$('#scrollbox').attr('scrollTop');
    var scrollheight=$('#scrollbox').attr('scrollHeight');
    var windowheight=$('#scrollbox').attr('clientHeight');
    var scrolloffset=20;
    var divnumber = $('#content').children().size();
    var form_data = form_data + "&size=" + divnumber;

    if(scrolltop>=(scrollheight-(windowheight+scrolloffset)))
    {
        //fetch new items
        $.post('dosearch.php', form_data, function(newitems){
        $('#content').append(newitems);
        });
    }
    setTimeout('scroll_result(form_data)', 1500);
}

这个功能不起作用,我需要一些帮助

提前谢谢...

【问题讨论】:

  • 你的滚动监听器在哪里?
  • myscroll 监听器是这个 div #scrollbox 当我到达这个 div 的底部时 if(scrolltop>=(scrollheight-(windowheight+scrolloffset))){ 这将执行并且必须发生一些我不知道的事情必须发生什么 :) 也许一些重复功能来重复这个过程?
  • 您是否遇到任何错误?当你到达 div 的底部时,新的 ajax 会再次触发吗? scrollresult 函数有什么作用?
  • 没有错误,但也没有功能。我只是改进了我的代码,如何发布?发布为评论或答案?
  • 滚动结果没有做任何事情..我只是设计滚动结果来在我到达这个 div 的底部时启动这个 ajax。

标签: javascript jquery ajax


【解决方案1】:

我只是在这里设置了一个示例滚动监听应用程序:

http://jsfiddle.net/E2wj2/2/

您需要为 scrollbox 监听滚动事件,

$('#scrollbox').scroll(function(){
  console.log('scrolling');
  scrolltop=$('#scrollbox').attr('scrollTop');
  if(scrolltop>=(scrollheight-(windowheight+scrolloffset))) {
    //do whatever you wish to do
  }
});

希望这会有所帮助。

【讨论】:

  • 如果我听这个事件,如果滚动条到达这个 div 的底部,我会得到更多的数据吗?
  • 是的。本质上,您正在做的是监听滚动事件,并检查您是否已到达 div 的底部。如果为真,请触发您的新 ajax 请求。
  • 我真的很喜欢这种会教新东西的答案..我根本不知道滚动监听器。这就是问题。真的谢谢..答案接受了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
  • 2016-11-07
相关资源
最近更新 更多