可通过$this->success('修改成功', 'javascript:js代码') 的方式,让页面提交后执行对应的js代码。
该方法仅对使用ajax-post和ajax-form的页面有效。
使用场景举例:
当翻页后,对列表数据进行编辑操作,编辑成功后希望页面跳回之前的页码。
$this->success('修改成功', 'javascript:location.href=document.referrer;');
var ids = $(".check-all").data('checkedIds');
根据API重置select2组件的值
参数
select_dom:dom select2元素节点
url:string 获取数据的API,需返回数据格式:['total_count' => 12,'data' => [['id' => 1, 'text' => 'text']]]
query:json 筛选API的参数,search为dom的值,pageSize最小值为20,最少会包括的参数有:search=xxx&page=1&pageSize=20,数据格式:{pageSize: "{:C('ADMIN_PER_PAGE_NUM')}"}
代码示例
// API
public function getLibrary($city){
$search = I('search');
$page = I('page');
$page == '' && $page = 1;
$pageSize = I('pageSize');
$pageSize == '' && $pageSize = 20;
$map['status'] = DBCont::NORMAL_STATUS;
$map['city'] = $city;
if ($search){
$map['name'] = ['like', "%{$search}%"];
}
$library_name = D('Library')->where($map)->field(['id, name'])->page($page, $pageSize)->select();
$total_count = D('Library')->getListforCount($map);
$lib_data = [];
foreach ($library_name as $k => $v){
$lib_data[$k]['id'] = $v['id'];
$lib_data[$k]['text'] = $v['name'];
}
$data = [
'total_count' => $total_count,
'data' => $lib_data,
];
$this->ajaxReturn($data);
}
// js使用代码
var city = $('input[name=city]').val();
var query = {
city:city,
pageSize: "{:C('ADMIN_PER_PAGE_NUM')}"
};
select2_ajax($('.select-two'), "{:U('getLibrary')}", query);
将当前列表选中checkbox的值赋值到自定义dom的data-checkedIds中。
参数
$this:dom 当前列表checkbox元素节点
selectIds:array 当前列表选中checkbox的值
valDom:string 存放selectIds转换成字符串的元素节点,默认为:.check-all
-
重写提交成功后的信息展示效果
在需要重写的页面执行以下代码, 回调里写客制化代码
jQuery.data(document.querySelector('.ajax-form'), 'showMsg', function(info){ //信息展示代码 //todo something });
-
关闭提交成功后的reload页面效果
给form元素设置属性 reload='false'