thinkphp ajax 重新获取表单令牌
发布时间:2021-10-22 15:31:05
栏目:程序猿
阅读量:1904
作者: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();
经过测试,该方法可行。
评论: