2012-06-29 108 views
1

我想实现无限滚动选项。我正在使用symfony2框架。无限滚动ajax jquery

的HTML如下:

<div id='more' >Loading...</div> 
<div id='no-more' >No more results</div> 
<div id='result'></div> 

控制器:

if($request->isXmlHttpRequest()){ 
    $appResult = THIS IN AN ARRAY WITH ALL THE RESULTS ...... 
    $return=array("responseCode"=>400, "appResult"=>$appResult); 
    $return=json_encode($return); 
    return new Response($return,200,array('Content-Type'=>'application/json')); 
} 

和JavaScript:

<script type="text/javascript"> 
     var page = 1; 


     $(window).scroll(function() { 
      $('#more').hide(); 
      $('#no-more').hide(); 


      if($(window).scrollTop() + $(window).height() > $(document).height() - 200) { 
       $('#more').css("top","400"); 
       $('#more').show(); 

      } 
      if($(window).scrollTop() + $(window).height() == $(document).height()) { 

       $('#more').hide(); 
       $('#no-more').hide(); 

       page++; 

       var data = { 
        page_num: page 
       }; 

       var actual_count = 30; 

       if((page-1)* 12 > actual_count){ 
        $('#no-more').css("top","400"); 
        $('#no-more').show(); 
       }else{ 
        $.ajax({ 
         type: "POST", 
         url: "{{ path('login') }}", 
         data:data, 
         success: function(res) { 


WHAT I DO HERE???? 


         } 
        }); 
       } 

      } 


     }); 

</script> 

的代码工作正常,它会发送请求并接收包含所有结果的响应数组。但我不知道如何处理这些结果,我如何在结果div中打印它们?

回答

0

我认为“res”正在返回HTML,并且您希望该数据在#result div中去?如果是的话把这个成功的函数中:

$('#result').html($(res)); 

或者只是

$('#result').html(res); 

如果返回“资源”是JSON,你必须以某种方式解析它,然后将其放置在div 。你能告诉我们res的结果是什么吗?

编辑:是它的JSON,你可能需要做类似如下:

var data = $.parseJSON(res); 
$.each(data, function(index, value) { 
    var currentHTML = $('#result').html(); 
    $('#result').html(currentHTML + this.description); 
}); 
+0

您好,感谢答案。 “res”是一个对象数组,每个对象包含一个描述(文本)和userid(整数),我想要在结果div中打印它们。你认为最好的选择是使用类似于 (var i = 0; i nasy

+0

更新了我的答案,以提供更多的想法 – LOLapalooza