Ajax封装

来源:互联网 发布:linux 文件权限 rwx 编辑:程序博客网 时间:2024/06/18 17:43
//dongtao//2017-2-20! function($, ouye) {var _currentInterAddress = '';function _options(showLoading, callback) {var min =true;return {type: 'POST',url: '',data: {},//contentType: 'application/json; charset=utf-8', 默认是application/x-www-form-urlencodeddataType: 'JSON',timeout: 60000,async: true,cache: false,beforeSend: function(xhr, settings) {if (showLoading && window.loading) {loading.open(min);}},success: function(data, status, xhr) {var d ;try{d= JSON.parse(data)}catch(SyntaxError){d=data}ouye.log('***(' + _currentInterAddress + ')ajax成功返回数据:' +  d);if ($.isFunction(callback)) {callback({status: '000000',responseBody: d});}},error: function(xhr, errorType, error) {ouye.log('***(' + _currentInterAddress + ')ajax失败返回数据:errorType=' + errorType + '  xhr=' + JSON.stringify(xhr) + ' error=' + error);var errorMsg = '请求失败,请重试!';if (errorType === "abort") {//无网络errorMsg = "网络已断开";} else if (errorType === "timeout") {//超时errorMsg = "系统连接超时";} else if (errorType === "error") {//服务器或者客户端错误switch (xhr.status) {case 303:errorMsg = '重定向';//survey.redirection('../pages/303.html');break;case 404:errorMsg = "未找到服务器";//survey.redirection('../pages/404.html');break;case 500://内部服务器错误。errorMsg = "服务器未响应";break;case 503://服务不可用。这个错误代码为IIS6.0所专用。errorMsg = "服务器不可用";break;case 504://网关超时。errorMsg = "网关超时";break;}}if ($.isFunction(callback)) {callback({status: '000001',errorMsg: errorMsg});}},complete: function(xhr, status) {if (showLoading && window.loading) {var time = window.setInterval(function() {var loadingExist = loading.isloaded();if (loadingExist) {window.clearInterval(time);loading.close();}}, 500);}}};}function _ajax(params, callback) {var host=/localhost|127.0.0.1/.test(window.location.host)?'139.196.178.135':window.location.host;var server=window.location.protocol+'//'+host+'/light-cloud-web2/';//是否加载loading框var showLoading = typeof params.showLoading === 'boolean' ? params.showLoading : true;//ajax请求地址var requestURL = server + params.url || '';//请求参数var requestData = params.request || {};//请求方式,默认是POSTvar requestType = params.method || 'POST';//实例化ajax对象var requestObj = new _options(showLoading, callback);//如果是本地文件不作处理if (requestURL.indexOf("file://") === 0) {if ($.isFunction(callback)) {callback({status: '000002',errorMsg: '本地浏览,不作数据交互处理!'});}return;}//轻应用先加个统一渠道参数//requestData.channel = 'z';//深度合并新的ajax请求参数$.extend(true, requestObj, {data: requestData,type: requestType,url: requestURL});//记录ajax发起日志var req = JSON.stringify(requestData);ouye.log('***(' + requestURL + ')ajax请求数据:' + req);_currentInterAddress = requestURL;//发起ajax请求$.ajax(requestObj);}ouye.ajax = _ajax;}(window.jQuery, window.ouye);
/** * 自定义组件 * 等待加载框 loading *//*CSS3.0实现loading框*/.ui-loading-mark {    width: 100%;    height: 100%;    background-color: rgba(0, 0, 0, 0.6);    position: fixed;    top: 0;    left: 0;    z-index: 99998;}.ui-loading-box {    width: 120px;    height: 120px;    background-color: transparent;    position: fixed;    top: 50%;    left: 50%;    z-index: 99999;    margin: -60px 0 0 -60px;}.ui-loading-box-min{    width: 60px;    height: 60px;    margin: -30px 0 0 -30px;}.ui-loading-spinner {    width: 100%;    height: 100%;    position: relative;}.ui-loading-spinner .ui-loading-spinner-container {    position: absolute;    width: 100%;    height: 100%;}.ui-loading-spinner .ui-loading-spinner-container > div {    width: 30px;    height: 30px;    background-color: #fff;    border-radius: 100%;    position: absolute;    -webkit-animation: bouncedelay 1.2s infinite ease-in-out;    animation: bouncedelay 1.2s infinite ease-in-out;    -webkit-animation-fill-mode: both;    animation-fill-mode: both;}.ui-loading-spinner .ui-loading-spinner-container-min > div{    width: 15px;    height: 15px;}.ui-loading-spinner .ui-loading-container2 {    -webkit-transform: rotateZ(45deg);    transform: rotateZ(45deg);}.ui-loading-spinner .ui-loading-container3 {    -webkit-transform: rotateZ(90deg);    transform: rotateZ(90deg);}.ui-loading-spinner .circle1 {    top: 0;    left: 0;}.ui-loading-spinner .circle2 {    top: 0;    right: 0;}.ui-loading-spinner .circle3 {    right: 0;    bottom: 0;}.ui-loading-spinner .circle4 {    left: 0;    bottom: 0;}.ui-loading-spinner .ui-loading-container2 .circle1 {    -webkit-animation-delay: -1.1s;    animation-delay: -1.1s;}.ui-loading-spinner .ui-loading-container3 .circle1 {    -webkit-animation-delay: -1.0s;    animation-delay: -1.0s;}.ui-loading-spinner .ui-loading-container1 .circle2 {    -webkit-animation-delay: -0.9s;    animation-delay: -0.9s;}.ui-loading-spinner .ui-loading-container2 .circle2 {    -webkit-animation-delay: -0.8s;    animation-delay: -0.8s;}.ui-loading-spinner .ui-loading-container3 .circle2 {    -webkit-animation-delay: -0.7s;    animation-delay: -0.7s;}.ui-loading-spinner .ui-loading-container1 .circle3 {    -webkit-animation-delay: -0.6s;    animation-delay: -0.6s;}.ui-loading-spinner .ui-loading-container2 .circle3 {    -webkit-animation-delay: -0.5s;    animation-delay: -0.5s;}.ui-loading-spinner .ui-loading-container3 .circle3 {    -webkit-animation-delay: -0.4s;    animation-delay: -0.4s;}.ui-loading-spinner .ui-loading-container1 .circle4 {    -webkit-animation-delay: -0.3s;    animation-delay: -0.3s;}.ui-loading-spinner .ui-loading-container2 .circle4 {    -webkit-animation-delay: -0.2s;    animation-delay: -0.2s;}.ui-loading-spinner .ui-loading-container3 .circle4 {    -webkit-animation-delay: -0.1s;    animation-delay: -0.1s;}@-webkit-keyframes bouncedelay {    0%, 80%, 100% {        -webkit-transform: scale(0.0)    }    40% {        -webkit-transform: scale(1.0)    }}@keyframes bouncedelay {    0%, 80%, 100% {        transform: scale(0.0);        -webkit-transform: scale(0.0);    }    40% {        transform: scale(1.0);        -webkit-transform: scale(1.0);    }}


var loading = loading || {};! function($) {function _template(min) {var $t = '<div class="ui-loading-mark" id="ui-loading-mark"></div>';var _tlp = [];_tlp.push('<div class="ui-loading-box');if (min) {_tlp.push(' ui-loading-box-min');}_tlp.push('" id="ui-loading-box">');_tlp.push('<div class="ui-loading-spinner">');for (var i = 1; i < 4; i++) {_tlp.push('<div class="ui-loading-spinner-container');if (min) {_tlp.push(' ui-loading-spinner-container-min');}_tlp.push(' ui-loading-container' + i + '">');for (var j = 1; j < 5; j++) {_tlp.push('<div class="circle' + j + '"></div>');}_tlp.push('</div>');}_tlp.push('</div>');_tlp.push('</div>');return [$t, _tlp.join('')];}function _open(min) {var _path = '../../compoent/ui/loading/loading.css';ouye.loadFiles(_path, function(responset) {if (responset.status) {if ($('#ui-loading-mark').size() === 0) {var tlp = _template(min);$('body').append(tlp[0]).append(tlp[1]);}} else {ouye.Prompt(responset.error);}});}function _close() {if ($('#ui-loading-mark').size() > 0) {$('#ui-loading-mark,#ui-loading-box').remove();}}//loading框是否已在页面加载好的标志function _isloaded() {return $('.ui-loading-mark');}loading = {open: function(min) {_open(min);},close: function() {_close();},isloaded: function() {return _isloaded();}};}(window.jQuery, loading);

文件中调用

function sendDeleteAjax(param,callback){ouye.ajax({url : 'cloudapi/template/deleteProject',request : {projectId:param}}, function (requestBody) {var message = [];var body=requestBody.responseBody;if (requestBody.status !== '000000') {message.push([null, requestBody.errorMsg]);} else {if(body.success){message.push([body, null]);}else{message.push([null,body.error]);}}if($.isFunction(callback)){callback(message);}});}

                                             
0 0