列表页点击加载更多,无刷新加载更多文章的方法(yii)

来源:互联网 发布:淘宝打假人查询 编辑:程序博客网 时间:2024/06/06 16:50

先说下看到这个问题后的思路,首先有个更多按钮,当点击更多按钮时候,触发一个js事件,js通过ajax向controller传值,并返回相关json数据,循环json数据,加到页面相关位置。


<a href="javascript:;" class="get_more">更多</a>


$('.get_more').click(function(){

//取得现在页面上的文章数

var articlecount = $('.xxx').length;

$.ajax({

    type:"POST",
         
  dataType:"json",//dataType (xml html script json jsonp text)
            data:{"articlecount":articlecount},//json 数据
            url:"
xxxxx",//地址
            success:function(json) {//成功获得的也是json对象
                var house='';
                for(var i=0; i<json.length; i++)  
                {  
                    //alert(json[i].content)
                    house += json[i].title;
                   
                }
                $(".get_more").before(house);
            }
    

})

})

//controller里面则是判断是否ajax提交,然后接受articlecount的,进行相关操作,并返回json

public function actionIndex()
{
            if(Yii::app()->request->isAjaxRequest){//是否ajax请求
                $articlecount =  Yii::app()->request->getParam('articlecount');//getparam 会获得 get post 变量 ,原来也可以接收json处理后的变量
                $criteria = new CDbCriteria;
                $criteria->limit =1;   //取1条数据,如果小于0,则不作处理  
                $criteria->offset =$articlecount;   //两条合并起来,则表示 limit 10 offset1,或者代表了。limit 1,10 
                $dataarticle = Article::model()->findAll($criteria);
                /*
                 * 如果简介那里,是想截取文章内容,则把下面注释去掉
                 */
//                for($i=0;$i<count($dataarticle);$i++){
//                    $content[$i]=$dataarticle[$i]->articledata['content'];
//                }
//                $dataarticle = json_decode(CJSON::encode($dataarticle)); //Yii 的方法将数组处理成json数据
//                for($j=0;$j<count($content);$j++){
//                    $dataarticle[$j]->content=$content[$j];
//                }
                echo CJSON::encode($dataarticle);
                exit;
            }
                
            $dataarticle = Article::model()->with('articledata')->findAll(array('limit'=>1));


            $this->render('index',array(
                    'dataarticle'=>$dataarticle,
            ));
}

0 0