您的位置:首页 > 编程语言 > PHP开发

Yii2.0实现AJAX搜索、分页

2016-07-25 12:38 399 查看
//1.首先判断搜索的数据是否为空

[php]
view plain
copy

$username = \Yii::$app->request->post('username');  //接收搜索的数  

//2.定义一个Where条件 目的是让Sql语句 恒成立


[php]
view plain
copy

$where = 1;  

//3.判断数据是否存在,拼接搜索的语句。如果多条件搜索,则直接 and  连接 即可

[php]
view plain
copy

if(!empty($username)){  
            $where = " username like '%$username%'";  
        }  

[php]
view plain
copy

//4.接收页码  
        $page = \Yii::$app->request->post('pages');  
        //判断当前页码是否存在  
        $pages = isset($page) ? $page : 1 ;  
        //计算总条数  
        $count = Username::find()->count();  
        //设置每一页显示的条数  
        $pageSize = 3 ;  
        //计算总页数  
        $pageSum = ceil($count/$pageSize);  
        //计算偏移量  
        $offset = ($pages - 1)*$pageSize;  
        //计算上一页 下一页  
        $last = $pages<=1 ? 1 : $pages-1 ;  
        $next = $pages>=$pageSum ? $pageSum : $pages+1 ;  
        //拼接A链接  
        $str = '';  
        $str .= "<a href='javascript:void(0);' onclick='page(1)'>首页</a>";  
        $str .= "<a href='javascript:void(0);' onclick='page($last)'>上一页</a>";  
        $str .= "<a href='javascript:void(0);' onclick='page($next)'>下一页</a>";  
        $str .= "<a href='javascript:void(0);' onclick='page($pageSize)'>尾页</a>";  
        //查询分页后的数据信息  
        $sql = "select * from username where $where limit $offset,$pageSize";  
        $userInfo = Username::findBySql($sql)->asArray()->all();  
<pre name="code" class="php">       //搜索后关键字标红  
      foreach($userInfo as $key => $value){  
         $userInfo[$key]['username'] = str_replace($username,"<font color='red'>$username</font>",$value['username']);  
      }  
<pre name="code" class="php">  

  //渲染模板

[php]
view
4000
plain
copy

return $this->renderPartial('index',['userInfo'=>$userInfo,'page'=>$str]);  

二,HTML页面展示如下
1.Script标签中书写如下

[php]
view plain
copy

<script>  
        function page(page){  
            //获取搜索的数据  
            var username = $("#username").val();  
            //发送AJAX请求  
            $.ajax({  
             url:"?r=index/index",  
             data:{pages:page,username:username},  
             type:"POST",  
             success:function(msg){  
                    $("#body").html(msg);  
                }  
             });  
        }  
    </script>  

//直接输出页码即可

<?= $page;?>

注意事项 : 点击搜索和分页,所触发的函数都是Page 方法。

<button onclick="page()">搜索</button>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: