/**
* @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. Tensorflow 梯度下降实例

    # coding: utf-8 # #### 假设我们要最小化函数 $y=x^2$, 选择初始点 $x_0=5$ # #### 1. 学习率为1的时候,x在5和-5之间震荡. # In[1]: imp ...

  2. imx6 18bit display

    imx6 kernel中使用18bit的lcd,uboot中bootargs参数bpp=32,lcd才能够正常显示. "bootargs=console=ttymxc0,115200 ini ...

  3. java---堆、栈、常量池的存储数据

    说到Java中堆.栈和常量池,首先还是看看他们各自存放的数据类型吧! 栈: Java的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method)也叫静态存储区. 堆区:(存放所 ...

  4. 【BZOJ】1093: [ZJOI2007]最大半连通子图(tarjan+拓扑序)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1093 两个条件综合起来加上求最大的节点数,那么很明显如果是环一定要缩点. 然后再仔细思考下就是求da ...

  5. layDate/DatePicker日期时间空间

    真心不错,果断收藏了. 1.示例与效果 2.更多示例与皮肤 补充说明:My97DatePicker日期时间插件 的使用 1.示例与效果 2. 更多 常用的实例:WdatePicker下载 http:/ ...

  6. 自己动手写CPU之第九阶段(2)——载入存储指令说明2(lwl、lwr)

    将陆续上传新书<自己动手写CPU>.今天是第38篇,我尽量每周四篇,可是近期已经非常久没有实现这个目标了.一直都有事,不好意思哈. 开展晒书评送书活动,在q=%E4%BA%9A%E9%A9 ...

  7. 《jquery权威指南2》学习笔记------ jquery获取复选框的值

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  8. pure

    Pure也是一款很出色的CSS框架,之前分享的Bootstrap是由Twitter出品的,而Pure是来自雅虎的.尽管从UI界面效果上来说,Pure没有Bootstrap那样精美,但Pure是纯CSS ...

  9. Jfinal报错sql injection violation, multi-statement not allow

    Jfinal报错: com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: sql injection ...

  10. kubernetes基础知识:限制POD和容器运行的CPU、内存

    限制运行内存 https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/ 先看一个pod的yaml ...