记录:easyadmin layui js监听返回结果
1.页面增加TOKEN隐藏值
html
<input type="hidden" name="TOKEN" value="{$row.id}">
2.JS监听返回结果,若失败,则赋值页面TOKEN值
js
define(["jquery", "easy-admin"], function ($, ea) {
var init = {
table_elem: '#currentTable',
table_render_id: 'currentTableRenderId',
show_url: 'cangku.bcktz/show',
createCkd_url: 'cangku.bcktz/createCkd',
};
var Controller = {
show: function () {
ea.listen();
},
createCkd:function () {
// ea.listen();
ea.listen(function (data) {
// 提交保存的数据
return data;
}, function (res) {
// 成功
ea.msg.success(res.msg, function () {
ea.api.closeCurrentOpen({
refreshTable: 'currentTableRenderId'
});
});
}, function (res) {
// 失败
ea.msg.error(res.msg, function () {
if(res.data && res.data.token){
$('input[name=TOKEN]').val(res.data.token);
}
});
});
},
};
return Controller;
});
3.功能
php
public function createCkd($id)
{
if ($this->request->isAjax() && $this->request->isPost()) {
if(jianYanToken(input('TOKEN')) === false){
$this->error('token失效,请刷新页面', ['token'=>getToken()]);
}
$data = [
......
];
$result = $this->logic->createCkd($data);
if($result['status'] !== 'success'){
$this->error($result['msg'], ['token'=>getToken()]);
}
$this->success('保存成功');
}
$this->assign('TOKEN', getToken());
return $this->fetch();
}
4.common.php 定义token方法
php
use think\facade\Cache;
// 生成token
function createToken($length=32) {
$str = '12356789ABCDEFGHIJKLMNOPQRSTUVWXYZ';//34个字符
$strlen = 34;
while($length > $strlen){
$str .= $str;
$strlen += 34;
}
$str = str_shuffle($str); //随机地打乱字符串中的所有字符
$token = substr($str,0,$length); //截取字符串
Cache::tag('pageToken')->set('pageToken_' . session('admin.id'), $token);
return $token;
}
// 验证token
function jianYanToken($token) {
if($token != Cache::get('pageToken_' . session('admin.id'))){
return false;
}
createToken(); //重置token
return true;
}
// 获取token
function getToken() {
$token = Cache::get('pageToken_' . session('admin.id'));
if(!$token){
$token = createToken(); //生成token
}
return $token;
}