tpadmin 管理后台大部分的请求都是 ajax 请求,返回的 json 数据大部分是通过一个 `ajax_progress` 方法处理
详细返回的 json 数据格式要求见 [数据返回](225019)
##后台返回数据格式要求
| 参数名称 | 类型 | 使用说明 |
| --- | --- | --- |
| msg | string | 提示信息,`code` 为 0 时信息使用 `layer.msg` 显示,3 秒自动消失,`code` 不为 0 时使用 `layer.alert` 显示,需手动关闭提示信息 |
| redirect | enum | 重定向选项,`curren`:当前页重定向到 `url` 地址,`url` 为空刷新当前页;`parent`:父层页重定向到 `url` 地址,`url` 为空刷新父层,并且关闭当前层;为空,不执行重定向 |
| alert | string | alert 出信息, 为空不 alert |
| close | bool | 是否关闭当前层,true 关闭,false 不关闭 |
| url | string | 重定向的链接,请参考 redirect 用法 |
| data | mixed | 需返回的数据,格式根据自己需要而定,只要能转化为 json 就行 |
| code | int | 错误码,0:成功,其他:错误 |
##前端数据处理
```
function ajax_progress(data, callback, param) {
if (data.code == 0) {
if (typeof data.opt == "object") {
var index = parent.layer.getframeIndex(window.name);
if (data.opt.close) {
parent.layer.close(index);
}
if (data.opt.redirect == 'current') {
// 当前页重定向
if (!data.opt.url) {
// 刷新
window.location.reload();
} else {
// 重定向到 url
window.location.href = data.opt.url;
}
} else if (data.opt.redirect == 'parent') {
// 父层重定向
if (!data.opt.url) {
// 刷新
window.parent.location.reload();
} else {
// 重定向到 url
window.parent.location.href = data.opt.url;
}
// 关闭当前层
parent.layer.close(index);
}
// 父层弹出信息
if (data.opt.alert) {
parent.layer.alert(data.opt.alert);
parent.layer.close(index);
}
if (!data.opt.close && !data.opt.redirect && !data.opt.alert) {
parent.layer.msg(data.msg);
parent.layer.close(index);
}
} else {
layer.msg(data.msg);
}
if (typeof callback == "function") {
if (typeof param != "undefined") {
param.unshift(data)
} else {
param = [data];
}
callback.apply(this, param);
}
} else {
layer.alert(data.msg, {title: "错误信息", icon: 2});
}
}
```
##使用示例
###直接使用
```
$("#form").Validform({
tiptype: 2,
ajaxPost: true,
showAllError: true,
callback: function (ret) {
ajax_progress(ret);
}
});
```
###配合 ajax_req 使用
```
// 恢复、禁用使用 ajax_req 发送请求,使用 ajax_progress 处理请求,使用回调函数 change_status 动态改变状态
禁用
function ajax_req(url,data,callback,param,shade){
if(shade === true) var loading = layer.load(2);
$.post(url,data,function(ret){
shade === true || layer.close(loading);
ajax_progress(ret,callback,param);
},'json')
}
function change_status(ret, obj, type) {
//配置数据,TYPE:['下一状态文字描述','当前状态class颜色','下一状态class颜色','下一状态方法名','状态标签选择器','下一状态标签icon','下一状态标签title']
var data = {
'resume':['禁用','success','warning','forbid','.status','','正常'],
'forbid':['恢复','warning','success','resume','.status','','禁用'],
};
var $this = $(obj);
$this.html(data[type][0]).attr("title","点击"+data[type][0]).removeClass("label-"+data[type][1]).addClass("label-"+data[type][2]).attr("onclick",$this.attr("onclick").replace(new RegExp(type,'g'),data[type][3]));
$this.parents("tr").find(data[type][4]).html(data[type][5]).removeClass("c-"+data[type][2]).addClass("c-"+data[type][1]).attr("title",data[type][6]);
}
```