ThinkPHP表单令牌Ajax请求失效问题解决办法


先看一下tp中表单令牌的使用方法

验证规则支持对表单的令牌验证,首先需要在你的表单里面增加下面隐藏域:

<input type="hidden" name="__token__" value="{$Request.token}" />

或者

{:token()}

token是页面刷新时候自动刷新的,但是如果表单提交请求时候,是通过Ajax方式提交的话,会导致出现token失效的错误,是因为Ajax请求页面不会重新申请token,那么解决办法是Ajax请求完成后,再次申请token。

1、先在控制器中加入生成的token 的方法

namespace app\index\controller;
use think\Controller;
class Index extends Controller{
    public function gettoken()
    {
        $token = $this->request->token('__token__', 'sha1');
        $this->success("token获取成功",['token', $token]);
    }}

2、Ajax请求token并替换表单中的token值

这里需要引入jQuery,这段代码放在你的Ajax请求中,需要在Ajax请求完成或者发生错误的都加入进去

$.get("http://www.demo.com/index/index/gettoken", function(data) {
   $('input[name="__token__"]').val(data.data.token);
});


点赞(1

上一篇: ThinkCMF模板文件提示未定义变量的解决办法

下一篇: picker组件默认选择项无效的解决办法

本文标签: #表单令牌 #ThinkPHP

版权声明: 若无特殊注明,本文皆为原创,转载请注明出处。

发布时间: 2019-12-22 13:41

点击总数: 1968

本文作者:97


请登陆后在进行评论


    点击登陆


    文章
    15
    评论
    14
    用户
    43