/**
* @Author Mona
* @Date 2016-12-08
* @description 网络层封装
*/ /**
* 封装基本请求方式
*/
window.BaseRequest = (function () {
//发送请求的所有方式
var request = {}; /**
* 基本请求
*/
function baseRequestFunc(type,param,url,async,contentType,dataType,processData,opt_suc,paramType,opt_error) {
var cur_url = contextPath+url;
var now_url = '';
//当把参数作为路由的一部分时此时的参数为字符串;
(paramType&&paramType=='url')?(now_url=cur_url+'/'+param+'.json'):(now_url=cur_url+'.json');
//这个里面是最基本的ajax
$.ajax({
type:type,
data:param,
url:now_url,
async:async,//默认为true
contentType:contentType,//默认为application/x-www-form-urlencoded
dataType:dataType,//默认为预期服务器返回的数据类型
processData:processData,//默认为true
success:function(data,textStatus,jqXHR){
if($.isFunction(opt_suc)){
opt_suc(data,textStatus,jqXHR);
}
},
error:function(jqXHR,textStatus,errorThrown){
renderErrorMsg(jqXHR,textStatus,errorThrown);
if($.isFunction()){
opt_error();
}
}
}) } /**
* get异步请求方式
*/
request.get = function (param,url,callback,paramType) {
baseRequestFunc('get',param,url,true,'application/x-www-form-urlencoded','json',true,callback,paramType);
} /**
* get同步请求方式
* param {param} object
*/
request.sync_get = function (param,url,callback,paramType) {
baseRequestFunc('get',param,url,false,'application/x-www-form-urlencoded','json',true,callback,paramType);
} /**
* post异步请求方式
* param {param} object
*/
request.post = function (param,url,callback,paramType) {
baseRequestFunc('post',param,url,true,'application/json','json',true,callback,paramType);
} /**
* post的requestBean请求方式 这种请求方式适用于字段较多,且需要formdata方式上传文件
* param {param} object {param.files} array {param.fileNames} array {param.inputData} object
*/
request.post_multipart_form_data = function (param,url,callback,paramType,formData,opt_error) {
var form_data = new FormData();
if(param.files && param.files.length>0){
$.each(param.files,function(k,info_name){
form_data.append('files',document.getElementById(info_name).files[0])
})
} if(param.fileNames && param.fileNames.length>0){
$.each(param.fileNames,function(i,item){
form_data.append('fileNames',item);
})
}
if(formData && formData=='formdata'){
$.each(param.inputData,function(i,item){
form_data.append(i,item);
})
}else{
form_data.append('requestBean', new Blob([JSON.stringify(param.inputData)], {
type: "application/json"
}));
}
baseRequestFunc('post',form_data,url,true,false,'json',false,callback,paramType,opt_error);
} /**
* post的formdata请求方式
* param {param} object
*/
request.post_form_data = function(param,url,callback,paramType,opt_error){
var form_data = new FormData();
$.each(param,function(i,item){
form_data.append(i,item);
})
baseRequestFunc('post',form_data,url,true,false,'json',false,callback,opt_error);
} /**
* post的JSON.stringify(param)请求方式
* param {param} object
*/
request.post_string_data = function(param,url,callback,paramType){
var cur_data = JSON.stringify(param);
baseRequestFunc('post',cur_data,url,true,'application/json','json',false,callback);
}
return request;
})();

  

工作笔记-javascript-网络层封装的更多相关文章

  1. javascript - 工作笔记 (事件四)

    在javascript - 工作笔记 (事件绑定二)篇中,我将事件的方法做了简单的包装,  JavaScript Code  12345   yx.bind(item, "click&quo ...

  2. 工作笔记5.JAVA图片验证码

    本文主要内容为:利用JAVA图片制作验证码. 设计思路: 1.拷贝AuthImageServlet.class图片验证码 2.配置web.xml 3.JSP中,调用封装好的AuthImageServl ...

  3. 2016年第2周读书笔记与工作笔记 scrollIntoView()与datalist元素

    这一周主要是看了html5网页开发实例与javascript 高级程序设计,供以后翻阅查找.  html5网页开发实例第1章与第二章的2.1部分: 第1章内容: html5在w3c的发展史. 浏览器的 ...

  4. 《工作笔记:移动web页面前端开发总结》

    工作笔记:移动web页面前端开发总结 移动web在当今的发展速度是一日千里,作为移动领域的门外汉,在这段时间的接触后,发现前端开发这一块做一个小小的总结. 1.四大浏览器内核 1.Trident (I ...

  5. 笔记-JavaScript与HTML DOM

    引用源:https://www.cnblogs.com/propheterLiu/p/5966791.html 笔记-JavaScript和HTML DOM 区别: javascript JavaSc ...

  6. JavaScript 模块封装

    JavaScript 模块封装 前言介绍 在最早的时候JavaScript这门语言其实是并没有模块这一概念,但是随着时间的推移与技术的发展将一些复用性较强的代码封装成模块变成了必要的趋势. 在这篇文章 ...

  7. 2016/11/17 周四 <javascript的封装简单示例>

    这是一个简单的javascript代码封装的示例以及封装后的调用方法: var ticker={ n:0, add:function() { this.n++; }, show:function() ...

  8. RX编程笔记——JavaScript 获取地理位置

    RX编程笔记——JavaScript 获取地理位置 2016-07-05

  9. 工作笔记3.手把手教你搭建SSH(struts2+hibernate+spring)环境

    上文中我们介绍<工作笔记2.软件开发经常使用工具> 从今天開始本文将教大家怎样进行开发?本文以搭建SSH(struts2+hibernate+spring)框架为例,共分为3步: 1)3个 ...

随机推荐

  1. HMLocationEvent

    HMLocationEvent *locEvent = [[HMLocationEvent alloc] initWithRegion:region1]; region1.notifyOnEntry ...

  2. hdu 2857:Mirror and Light(计算几何,点关于直线的对称点,求两线段交点坐标)

    Mirror and Light Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. WPF 隧道路由事件

    阅读本文前,请先了解 冒泡路由事件:http://www.cnblogs.com/andrew-blog/p/WPF_BubbledEvent.html 隧道路由事件的工作方式和冒泡路由事件相同,但方 ...

  4. 自定义控件_StickyNavLaout

    关注我一.View结构原理1.extends linearLayout 继承想要用的布局,首先完成布局的填充在 onFinishInflate 方法中 findViewById(); @Overrid ...

  5. EL表达式页面间传参(对象参数和普通参数)

    ${param['user.name']}.${param.name}

  6. android-修改TextView中部分文字的颜色

    :

  7. ORACLE WITH AS 用法,创建临时表

    语法: with tempName as (select ....) select ... –针对一个别名with tmp as (select * from tb_name) –针对多个别名with ...

  8. Hibernate如何执行存储过程?

    Hibernate如何执行存储过程? @Overridepublic Boolean setVarValue(final String processInstanceId, final String ...

  9. js 空正则匹配任意一个位置

    看一个正则 这里明显,起到匹配作用的是 | 后的,可 | 后什么都没有,原理不知道,也没有搜到文献,只有在 Reg101 上是这样解释的, 所以得出结论: js 中,空正则匹配任意一个位置. 不过,这 ...

  10. Python--进阶处理9

    # =========================第九章:元编程============================= # ----------------在函数上添加包装器--------- ...