前端模块的ajax响应工具

/*

* @Author: 琼歌

* @Date: 2018-05-15 15:26:38

* @Last Modified by: lastName.琼歌先生

* @Last Modified time: 2018-07-30 12:07:15

*/

'use strict';

var Hogan = require('hogan.js');

var conf = {

serverHost : ''

};

/*

*工具类请求和传入数据的方式如下:

*_mm.request({

* url :'',

* type :'',

* success:function(res){

*

* },

* error:function(err){}

*});

*

*

*

*/

var _mm = {

// 网络请求

request : function(param){

var _this = this;//对于内部的方法,相当于java直接的调用,此处把该页面的对象赋值给_this;

$.ajax({

type : param.method || 'get',//访问的类型

url : param.url || '',//访问的连接

dataType : param.type || 'json',//数据格式

data : param.data || '',//传过去的参数

success : function(res){//请求成功

// 请求成功

if(0 === res.status){

typeof param.success === 'function' && param.success(res.data, res.msg);

}

// 没有登录状态,需要强制登录,与后端约定的

else if(10 === res.status){

_this.doLogin();

}

// 请求数据错误

else if(1 === res.status){

typeof param.error === 'function' && param.error(res.msg);

}

},

error : function(err){//请求失败,后台返回错误信息吗

typeof param.error === 'function' && param.error(err.statusText);

}

});

},

// 获取服务器地址,获取后端接口地址

getServerUrl : function(path){

return conf.serverHost + path;

},

// 获取url参数,获取什么参数

getUrlParam : function(name){

var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');//对url进行获取,匹配出key=value的模式

var result = window.location.search.substr(1).match(reg);//search就是url中问号之后的参数,包括问号

return result ? decodeURIComponent(result[2]) : null; //result[2]则是value,decodeURIComponent为解码

},

// 渲染html模板

/*

*一般,而言传入的htmlTemplate都是携带{{xx}}参数的html代码对象,如var html='<div>{{da}}</div>'

*data:{da:'123'}

* _mm.renderHtml(html,data);

* 模式如上:

*/

renderHtml : function(htmlTemplate, data){

var template = Hogan.compile(htmlTemplate),//初始化hogan组件并编译模板,需要在页面前端引入hogan对象

result = template.render(data); //通过data将数据给返回到页面,在前端所传入的模板则可以,通过{{key}}来获取参数

return result;

},

// 成功提示,提示方法

successTips : function(msg){

alert(msg || '操作成功!');

},

// 错误提示

errorTips : function(msg){

alert(msg || '哪里不对了~');

},

// 字段的验证,支持非空、手机、邮箱的判断

validate : function(value, type){

var value = $.trim(value);//去掉前后空格,并转化为字符串

// 非空验证

if('require' === type){//输入require的时候,则意味着是必须有值的

return !!value;

}

// 手机号验证

if('phone' === type){

return /^1\d{10}$/.test(value);//以1开口,后面是10位

}

// 邮箱格式验证

if('email' === type){

return /^(\w)+(\.\w+)*@(\w)+((\.\w{2,3}){1,3})$/.test(value);//邮箱格式验证,百度后自测,可以直接将正则复制到浏览器的console里面测试,支持js

}

},

// 统一登录处理,统一的处理方法

//redircet:encodeURIComponent(window.location.href);其中window.location.href是请求访问的当前页面,该操作是对该页面进行了重新新编码,redirect是重新传入的意思,也即是说处理完后会重新返回最初的页面

doLogin : function(){

window.location.href = './user-login.html?redirect=' + encodeURIComponent(window.location.href);

},

/**

* 跳转会主页的方法

*/

goHome : function(){

window.location.href = './index.html';

}

};

module.exports = _mm;

猜你喜欢

转载自blog.csdn.net/qq_36505948/article/details/81282933