ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
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:成功,其他:错误 | ##前端数据处理 ``` /** * ajax 处理,对应服务端 ajax_return_adv 方法返回的 json 数据处理 * @param data ajax返回数据 * @param callback 成功回调函数 * @param param 回调参数 */ 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 动态改变状态 <a href="javascript:;" onclick="ajax_req('/admin/admin_node/forbid/id/1.html',{},change_status,[this,'forbid'])" class="label label-warning radius" title="点击禁用">禁用</a> /** * 操作对象发送ajax请求 * @param url 请求地址 * @param data 请求参数 * @param callback 成功回调 * @param param 回调参数 * @param shade 是否遮罩 */ 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') } /** * 恢复禁用等状态改变回调函数 * @param ret * @param obj * @param type */ function change_status(ret, obj, type) { //配置数据,TYPE:['下一状态文字描述','当前状态class颜色','下一状态class颜色','下一状态方法名','状态标签选择器','下一状态标签icon','下一状态标签title'] var data = { 'resume':['禁用','success','warning','forbid','.status','&#xe615;','正常'], 'forbid':['恢复','warning','success','resume','.status','&#xe631;','禁用'], }; 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]); } ```