thinkphp+ajax异步获取数据动态填充页面数据并分页(不刷新)

问题:在管理系统中点击左边的树形菜单,比如说有一个目录叫部门,部门下面有职位,点击这个职位可以把相关职位的人员信息全部显示在右边的列表中。

实现:点击职位-》获取到职位的名称-》ajax查找相关职位并返回数据-》模板渲染-》截取模板内部所需现实的部分-》通过js插入到视图中。

最开始自己想的是通过ajax获取到数据后循环拼接字符串,生产表格需要填充的代码,再通过('#table_id').appennd('$str')来添加,老哥说这样需要再做js分页很麻烦,老哥便提供了这种方式,感觉实现很快,但是他说我想的那种方式才是最正规的,但做事要看效率。。。(学到了)

ajax:

$.post("{:url('admin/index')}",{'click_role_key':key},function (html_data) {
        $('#usertable').html($(html_data).find('#usertable').html());
});

控制器:

public function index(){
        $data  = User::getUserList();
        //爱好表查询
        $hobby=Hobby::all();
        //根据爱好id获取对应的爱好名
        Hobby::hobby_convert($data,$hobby);
        //部门查询
        $department=User::getDepartmentList();
        //角色查询
        $role=Role::all();

        $this->assign('user',$data);
        $this->assign('department',$department);
        $this->assign('role',$role);
        $this->assign('hobby',$hobby);
        return $this->fetch('index/empty');
    }

模型:

public static function getUserList(){
        $key = input('param.key','');
        $click_department_key=input('param.click_department_key');
        $click_role_key=input('param.click_role_key');
        $user_search = Db::table('user')
            ->alias('user')
            ->join('department dpment','user.did=dpment.did')
            ->join('role role','user.rid=role.rid')
            ->field('uid,uname,user.did,user.rid,department,rolename,hobby');

        $user_search->whereNull('delete_at');

        if(trim($key)){
            $user_search->where('uname','like','%'.$key.'%');
        }
        if(trim($click_department_key)!=''){
            $user_search->where('department','like','%'.$click_department_key.'%');
            return $user_search->paginate(2,false,['query'=>['click_department_key'=>$click_department_key]]);
        }
        if(trim($click_role_key)!=''){
            $user_search->where('rolename','like','%'.$click_role_key.'%');
            return $user_search->paginate(2,false,['query'=>['click_role_key'=>$click_role_key]]);
        }

        return $user_search->paginate(2);
    }

视图:

thinkphp+ajax异步获取数据动态填充页面数据并分页(不刷新)_第1张图片

重点:

1.分页

return $user_search->paginate(2,false,['query'=>['click_role_key'=>$click_role_key]]);

2.视图替换

$('#usertable').html($(html_data).find('#usertable').html());

这里返回的是整个渲染过后的视图字段,再从中取我们需要显示的部分填充到现有的页面中

thinkphp+ajax异步获取数据动态填充页面数据并分页(不刷新)_第2张图片

你可能感兴趣的:(thinkphp)