總結一下用面向物件寫法呼叫藉口
阿新 • • 發佈:2019-01-07
總結一下用面向物件寫法呼叫藉口
<script src="jquery.min.js"></script>
<script src="store.min.js"></script>
<script src="layer/layer.js"></script>
<script>
//獲取連結引數
function GetQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var arr = window.location.search.substr(1).match(reg);
if (arr != null) {
return decodeURIComponent(arr[2])
};
return null;
};
var debug = GetQueryString('debug') ? GetQueryString('debug') : 'false'; //軟體版本
//正試地址
var stockDomain = "http://mapi.ktkt.com";
if (debug == 'true') {
//測試地址
stockDomain = "http://utest.mapi.ktkt.com";
}
var token = GetQueryString('token'); //使用者token
var origin = GetQueryString('origin');
var ajaxSengMode = !("WebSocket" in window ? true : false);
// 標題切換
// $('.set_left').find('a').on('click', function (e) {
// e.preventDefault();
// var url = $(this).attr("href");
// window.location.href = url + "?token=" + token + "&origin=" + origin + '&debug=' + debug;
// return false;
// });
var myPermissionInstance = new MyPermission({
token: token,
origin: origin,
debug: debug,
apiUrl: stockDomain,
advancedBrowser: ajaxSengMode
});
console.log(myPermissionInstance);
myPermissionInstance.Start();
</script>
!(function (win, $) {
var myPermissionApi = function (options) {
var domain = options.domain || '';
var self = this;
this.isBow = "WebSocket" in window ? true : false;
this.Err = { "code": 500, "msg": "" };
this.Error = function (code, msg) {
var err = this.Err;
err.code = code;
err.msg = msg == "error" ? '網路不給力啊,請再次重新整理' : msg;
return err;
};
//請求方式
this.ajaxSendMode = function (url, args, funcOk, funcErr) {
var self = this;
if (!self.isBow) {
self.ajaxSendModeJsonp(url, args, funcOk, funcErr);
return;
};
$.ajax({
type: 'post',
url: url,
dataType: 'json',
data: args,
success: function (json) {
funcOk(json);
},
error: function (errorThrown, textStatus) {
if (errorThrown.status === 911) {
var errInfo = JSON.parse(errorThrown.responseText);
funcErr && funcErr(self.Error(errInfo.code, errInfo.message));
return;
};
funcErr && funcErr(self.Error(errorThrown.status, errorThrown.responseText));
}
});
};
this.ajaxSendModeGet = function (url, args, funcOk, funcErr) {
var self = this;
if (!self.isBow) {
self.ajaxSendModeJsonp(url, args, funcOk, funcErr);
return;
};
$.ajax({
type: 'get',
url: url,
dataType: 'json',
data: args,
cache:false,
success: function (json) {
/* if (json.code && json.message && json.code != 200) {
funcErr && funcErr(self.Error(json.code, json.message));
return;
} */
funcOk(json);
},
error: function (errorThrown, textStatus) {
if (errorThrown.status === 911) {
var errIntext = errorThrown.responseText + '';
var error = errIntext.replace(/^(\w+)?\(|\)\;$/mg, '');
var errInfo = $.parseJSON(error);
if (errInfo.code == undefined) {
errInfo.code = '25000';
};
if (errInfo.message == undefined) {
errInfo.message = '沒有獲取到伺服器返回錯誤';
};
funcErr && funcErr(self.Error(errInfo.code, errInfo.message));
}
}
});
};
this.ajaxSendModeJsonp = function (url, args, funcOk, funcErr) {
var self = this;
$.ajax({
type: 'get',
url: url,
dataType: 'jsonp',
data: args,
success: function (json) {
if (json.code && json.message && json.code != 200) {
funcErr && funcErr(self.Error(json.code, json.message));
return;
}
funcOk(json);
},
error: function (errorThrown, textStatus) {
if (errorThrown.status === 911) {
var errIntext = errorThrown.responseText + '';
var error = errIntext.replace(/^(\w+)?\(|\)\;$/mg, '');
var errInfo = $.parseJSON(error);
if (errInfo.code == undefined) {
errInfo.code = '25000';
};
if (errInfo.message == undefined) {
errInfo.message = '沒有獲取到伺服器返回錯誤';
};
funcErr && funcErr(self.Error(errInfo.code, errInfo.message));
return;
}
}
});
};
// 獲取我的許可權
this.getMyPermissionArgs = { 'token': '', 'origin': '', 'version': '' };
this.getMyPermissionReq = function (args, funcOk, funcErr) {
var url = domain + "/permission/v1/info";
var args = $.extend(self.getMyPermissionArgs, args);
self.ajaxSendMode(url, args, funcOk, funcErr);
};
}
var MyPermission = function (options) {
var defaults = {
token: "",
origin: "",
apiUrl: "", //地址
advancedBrowser: false //是否為高階瀏覽器
};
this.classTitle = $('#classTitle'); // 課程名稱
this.Err = { "code": 500, "msg": "" };
this.Error = function (code, msg) {
var err = this.Err;
err.code = code;
err.msg = msg == "error" ? '網路不給力啊,請再次重新整理' : msg;
return err;
};
this.options = $.extend({}, defaults, options);
};
$.extend(MyPermission.prototype, {
Start: function () {
this.init();
},
init: function () {
var self = this;
this.Layer = win.layer;
this.Store = win.store;
this.myPermissionApi = new myPermissionApi({ "domain": this.options.apiUrl });
//顯示許可權列表
this.showPermissionListFunc();
// 我的許可權
this.getMyPermissionFunc();
},
// 我的許可權
getMyPermissionFunc: function () {
var self = this;
var args = this.myPermissionApi.getMyPermissionArgs;
args.token = this.options.token;
args.origin = this.options.origin;
args.version = this.Store.get('myPermissionListVersion#');
this.myPermissionApi.getMyPermissionReq(args, function (data) {
console.log(data);
//更新快取
if(data.refresh){
// 設定我的許可權快取
self.Store.set('myPermissionMap#', data.data);
// 設定版本號
self.Store.set('myPermissionListVersion#',data.version);
self.showPermissionListFunc();
}
}, function (err) {
//清除快取
self.localStorageHandle();
self.showPermissionListFunc();
self.Layer.msg(err.msg);
});
},
//顯示許可權列表
showPermissionListFunc: function (){
var myPermissionMap = this.Store.get('myPermissionMap#');
// 快取不存在,返回
if (!myPermissionMap) {
this.classTitle.html('暫無');
return;
};
this.classTitle.html('暫無');
},
//清除快取
localStorageHandle: function () {
var self = this;
self.Store.remove('myPermissionMap#');
self.Store.remove('myPermissionListVersion#')
},
});
win['MyPermission'] = MyPermission;
})(window, jQuery);