一个网站建设爱好者,技术交流,相互学习
当前位置:首页>>程序猿
thinkphp ajax 重新获取表单令牌
发布时间:2021-10-22 15:31:05 栏目:程序猿 阅读量:1521 作者:webcms

最近发现之前做的一个顾客管理系统在使用的时候出现了一些bug,在网络不太好的情况下表单数据会重复提交,于是我使用了 tp5提供的表单令牌 Token来解决这个问题,在解决的时候,遇到一个新的问题,就是如果表单提交的时候 数据验证没有通过,这时候如果再次提交的话 就会提示令牌已经失效或者失败。

我的办法是通过ajax从新获取token:

在控制器里面添加一个 获取token的方法,这个是tp5.0的方法

/**
 * 获取表单令牌
 */
function getToken() {
    $request =\think\Request::instance();
    return $request->token();
}

这个是tp6获取token的方法

function getToken(Request $request) {
        $token = $request->buildToken('__token__', 'sha1');;
        return $token;
    }

在前端ajax里面添加获取这个令牌的方法

/**
 * 前台获取token并且修改 __token__ 文本框的值
 */
function getFormToken() {
    $.ajax({
        url:'/admin/user/getToken',
        success:function (res) {
            $('[name="__token__"]').val(res);
        }
    });
}

最后在前端消息提示的地方通过访问 getFormToken() 方法更新表单令牌

getFormToken();

经过测试,该方法可行。


评论:

IT视频教程
Copyright © web小工匠 保留所有权利. 渝ICP备15008469号 网站地图