当前位置: 首页 > 工具软件 > Admin > 使用案例 >

admin.js

龙逸清
2023-12-01

admin.js

自己收藏的js、无实际用途

(function($){
	$.extend({
		//管理系统系统层通用方法
		admin:{
			/**
			 * encodeURL(unescape):用于对URL的组成部分进行个别编码。因此对";/?:@&=+$,#"不会被编码。网页提交表单时,如果有空格,会被转化为+字符
			 * encodeURLComponent(decodeURIComponent):对整个URL进行编码。
			 * 获取地址栏参数
			 */
			getUrlParam:function(param){
				var reg=new RegExp("(^|&)"+param+"=([^&]*)(&|$)");
				var r=windw.location.search.substr(1).match(reg);
				if(r!=null){
					return decodeURIComponent(r[2]);
				}else{
					return null;
				}
			},
			/**
			 * 完整的URL的组成部分
			 * scheme://host:port/path?query#fragment
			 * schema:通信协议,常用http,ftp,maito等。
			 * host:主机,服务器(计算机)域名系统DNS主机名或IP地址
			 * port:端口、整数,可选。省略时使用方案的默认的端口,如http的端口为80
			 * path:路径,由零个或多个"/"符号隔开的字符串、一般用来表示主机上的一个目录或文件地址
			 * query:查询,可选,用于给动态网页传递参数,可由多个参数用"&"符号隔开,每个参数的名称和值用"="符号隔开
			 * fragment:信息片段,用于指定网络资源中的片段,也称瞄点
			 * 如http://www.baidu.com/index.html?ver=1.0&id=12#imhere
			 */
			getUrl:function(){
				return window.location.href;
			}
			/**
			 * 返回Url的协议部分,如上述实例的http
			 */
			getSchema:function(){
				return window.location.protocol;
			},
			/**
			 * 返回Url的主机部分。如上面实例的www.baidu.com
			 */
			getHost:function(){
				return window.location.host;
			},
			/**
			 * 返回Url的端口 
			 * 如果采用协议默认的端口,如上面的http的默认端口为80,则不管地址栏是否存在端口值,都返回空字符串
			 */
			getPort:function(){
				return window.location.port;
			},
			/**
			 * 返回URL的路径部分
			 */
			getUrlPath:function(){
				return window.location.pathname;
			},
			/**
			 * 返回查询参数部分,如上面实例的?ver=1.0&id=12
			 */
			getSearch():function(){
				return window.location.search;
			},
			/**
			 * 返回瞄点,如上面实例:#imhere
			 */
			getHash:function(){
				return window.location.hash;
			},
			exit:function(callback){
				$.common.data($.setter["tableName"],{key:$.setter.request.toKenName,remove:true});
				callback&&callback(); //有回调则执行回调函数
				window.location.href=$.setter.ctx()+'login.html';
			},
			error:function(content,options){
				$.modal.alertError(content);
			},
			isOk:function(res){ //用于判断是否成功的情况
				var response=$.setter.response;
				var statusCode=response.statusCodel;
				if(res[response.statusName]==statusCode.ok){
					return ture;
				}else{
					return false;
				}
			},
			msgName:function(){
				var response=$.setter.response;
				return response.msgName;
			}
			/**
			 * ajax请求
			 */
			req:function(options){
				var that=this,
				success=options.success,
				error=options.error,
				request=$.setter.request,
				response=$.setter.response,
				debug=function(){
					return $.setter.debug?'<br><cite>URL:</cite>'+options.url:'';
				};
				options.data=options.data||{};
				var isJsonStr=options["isJsonStr"];
				if($.common.isEmpty(isJsonStr)){
					isJsonStr=true;
				}
				if(typeof options.data!=='string' &&isJsonStr){
					options.data=JSON.stringify(options.data);
					options.contentType="application/json;charset=utf-8";
				}
				options.heads=options.headers||{};
				if(request.tokenName){
					var sendData=typeof options.data==='string'?JSON.parse(options.data):options.data;
					var tokenValue=request.tokenName in sendData?options.data[request.tokenName]
						:($.common.data($.setter.tableName)[request.tokenName||'']);
					options.data[request.tokenName]=tokenValue;
					options.heads[request.tokenName]=tokenValue;
				}
				var url=options.url;
				if($.common.isNotEmpty(url)){ //自动过滤测试文件路径
					var param="";
					var ind=url.indexOf("?");
					if(ind>0){
						param=url.substr(ind);
						url=url.substring(0,ind);
					}
					if($.setter.active){
						if($.common.endWith(url,".json")){
							url=url.substring(0,url.length-5);
						}
					}else{
						if(!$.common.endWith(url,".json")){
							url+=".json";
						}
					}
					if($.common.isNotEmpty(param)){
						url+=param;
					}
					option.url=url;
				}
				delete options.success;
				delete options.error;
				options=$.extend({
					type:'post',
					dataType:'json',
					xhrFields:{
						withCredentials:true  //在跨域情况下可以携带cookie
					},
					success:function(res){
						var statusCode=response.statusCode;
						if(res[response.statusName]==statusCode.ok){
							if(typeof options.done==='function'){
								var ret=option.done(res);
								if(ret){
									$.when.apply(this,ret).then(function(){ //异步返回后关闭
										$.modal.closeLoading();
										$.modal.enable();
									});
								}
							}
							$.modal.closeLoading();
							$.modal.enable();
						}else if(res[response.statusName]==statusCode.logout){
							 $.admin.exit();
						}else{
							var errorInfo=['<cite>Error:</cite>'+(res[response.msgName]||'返回状态码异常').debug()].join('');
							$.admin.error(errorInfo);
							$.modal.closeLoading();
							$.modal.enable();
						}
						typeof success==='function' && success(res);
					},
					error :function(e,code){
						//修改了
						e=JSON.parse(e.responseText);
						if(e.retCode==='40100'){
							//需要登录错误直接跳转登录页面
							$.util.redirect($.setter.rootPath()+'login/login.html',top);
						}else{
							//其他错误弹框提示
							var errorInfo=['请求异常,请重试<br><cite>错误码:</cite>'+e.retCode+'<br><cite>错误信息:</cite>'+e.retMsg,debug()].join('')];
						   $.admin.error(errorInfo);
						}
						$.modal.closeLoading();
						$.modal.enable();
						
					}
				},options);
				if($.setter.debug){
					log.log("提交请求");
					log.log(options);
				}
				return $.ajax(options);
			},
			postForm:function(url,data,callback){
				var config={
					url:url,
					type:"post",
					dataType:"json",
					data:data,
					isJsonStr:false,
					beforeSend:function(){
						$.modal.loading("正在处理中,请稍后....");
					},
					done:function(result){
						if(typeof callback==='function'){
							return callback(result);
						}
					}
				};
				return $.admin.req(config);
			},
			postJson:function(url,data,callback){
				return post(url,data,callback);
			},
			//post请求传输
			post:function(url,data,callback){
				var config={
					url:url,
					type:"post",
					dataType:"json",
					data:data,
					isJsonStr:true,
					beforeSend:function(){
						$.modal.loading("正在处理中,请稍后...");
					},
					done:function(result){
						if(typeof callback==='function'){
							return callback(result);
						}
					}
				};
				return $.admin.req(config);
			},
			//get请求传输
			get:function(url,callback){
				var config={
					url:url,
					type:"get",
					dataType:"json",
					"isJsonStr":false,
					beforeSend:function(){
						$.modal.loading("正在处理,请稍后...");
					},
					done:function(result){
						if(typeof callback==='function'){
							return callback(result);
						}
					}
				};
				return $.admin.req(config);
			}
		}
  });
})(jQuery);

//IE8 不支持CORS-跨域访问的支持,所需要增加如下方法
jQuery.support.cors=true;
/**设置全局ajax处理*/
$.ajaxSetup({
	/**
	 * 当请求完成之后调用这个函数,无论成功或失败
	 * 传入XMLHttpRequest对象,以及一个包含成功或错误代码的字符串
	 */
	complete: function(XMLHttpRequest,textStatus){
		if(textStatus=='timeout'){
			$.modal.alertWarning("服务器超时,请稍后再试!")
			$.modal.closeLoading();
		}else if(textStatus=='parseerror'){
			$.modal.alertWarning("服务器错误,请联系管理员!")
			$.modal.closeLoading();
		}
	}
});
//全局异常捕获
window.onerror=function(msg,url,lineNo,columnNo,error){
	if(!(typeof msg==='string')){
		msg="出错了";
	}
	var str=msg.toLowerCase();
	var scr="script error";
	if(str.indexOf(scr)>0){
		$.admin.error("脚本加载出错,请查看浏览器输出明细");
	}else{
		var message=[
		 '脚本出错了,请联系管理员',
		 '<br>出错信息:'+msg,
		 '<br>出错链接:'+url,
		 '<br>出错行号:'+lineNo,
		 '<br>出错位置:'+columnNo
		].join('');
		$.admin.error(message);
		if($.setter.debug){
			error=error||'';
			console.error(error);
		}
	}
	return true;
}

 类似资料:

相关阅读

相关文章

相关问答