商城-后台新增管理员

做到这里,慢慢发现用ajax设计后台,许多地方还是要做改动的。
出现的问题:
1.局部刷新的部分,载入新页面后,js失效了
解决:给需要局部刷新的链接加上指定类名ajax,然后添加属性info写上地址,(其实是事件绑定的原理)。

$(document).on('click','.ajax',function(){
            var url=$(this).attr("info");
            $("#ajaxshow").load(url,function(responseText,textStatus,XMLHttpRequest){
                if(XMLHttpRequest.status==404 || XMLHttpRequest.status==500){
                    $("#ajaxshow").html("<p>error</p>");
                }else{

                }

            })
    });

2.点击添加,通过1的方法,我们局部区域出现了表单,但是点击后想提交到控制器并处理,但是不想跳转到别的地方,还在局部区域显示信息。这个时候你用form中的action就不行了,那样就会跳走。这个时候我们可能会想,之前怎么实现的,现在还能用1的方式吗?
不行,因为这次还要带着表单中的数据过去,
解决:我们把的action和method去掉,只留个空架子在那里,具体的实现和表单提交没有任何关系:

$(document).on('click','.submit',function(){
        var username=$('#username').val();
        var password=$('#password').val();
        var email=$('#email').val();
        $.post("/lolnews/public/admin/managerlist/add.html",
        {'username':username,'password':password,'email':email},
        function(data){
            $('#ajaxshow').html(data);
        })
        return false;       
    });

3.添加的数据多了之后,我想到得给管理员列表来一个分页显示,这时我用paginate(5)代替了all()方法,然后在视图中{$list->render},此时导航是出来了,但是点击页码,无法在我们的局部区域进行更新,于是我窥探分页代码的结构,解决:

$(document).on('click','.pagination li a',function(){
        var url=$(this).attr('href');
        $(this).attr('href','javascript:void(0);');
        $("#ajaxshow").load(url,function(responseText,textStatus,XMLHttpRequest){
                if(XMLHttpRequest.status==404 || XMLHttpRequest.status==500){
                    $("#ajaxshow").html("<p>error</p>");
                }else{

                }

        })
    })

本节说得是新增,贴上控制器代码

<?php

namespace app\admin\controller;
use think\Controller;
use app\admin\model\Admin;

class ManagerlistController extends Controller
{
    public function managerlist(){
        //$list=Admin::all();
        $list=Admin::paginate(5);
        return view("manager",['list'=>$list]);    
    }

    public function add(){
        if(request()->isPost()){
            $username=input('username');
            $password=input('password');
            $email=input('email');
            $admin=new Admin;
            $admin->username=$username;
            $admin->password=$password;
            $admin->email=$email;
            if($admin->save()){
                $url=url('admin/managerlist/managerlist');
                return '用户:'.$admin->username.'新增成功'.'<br>'.'<a info="/lolnews/public/admin/managerlist/add.html" class="ajax">继续添加</a>'.'<br>'
                .'<a info='.$url.' class="ajax">管理员列表</a>';
            }else{
                $admin->getError();
            }
        }else{
            return view("add"); 
        };

    }
}

可以看出来,ajax提交过来的信息,正好也能以$_POST[”]来获取,这里用的是框架的input(”)助手函数,而且处理后的提示信息正好是return的,于是正好,可以成功的返回数据data,真是精彩至极!

犯得一个错误:以为jquery中的attr()设置属性是这样用的,

错误
$('').attr('href')='abc';
正确
$('').attr('href''abc');
关于获取地址:
注意在视图中{:url('admin/index/index')}
在控制器中url('admin/index/index'),是方法
在控制器字符串中只能用最原始的了,或者先用url()方法得到地址,赋值给变量,然后拼接到字符串中。
在js中,就没得搞咯,直接写原始的地址,或者把地址放到html元素,然后来获取。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值