模拟jQuery简单封装ajax
2016-12-16 00:43
197 查看
1 /*模拟jQuery的写法 (简单写法)*/ 2 var $={}; 3 /*ajax*/ 4 $.ajax = function (options) { 5 /* 6 * 请求 7 * 1.请求接口 type get post 默认的是get 决定是否设置请求头 8 * 2.接口地址 url 不确定 字符串 如果用户没有传 默认的接口地址为当前路径 9 * 3.是否是异步 async 默认的就是异步 true;false 是同步请求 10 * 4.提交数据 data 默认的是对象 {name:'XXX',age:'19'} 默认是{} 11 * 12 * 响应 13 * 1.成功回调函数 success 代表的是一个函数 用来处理成功之后的业务逻辑的函数 14 * 1.1 字符串 xml json格式的字符串 数据转换 15 * 2.失败回调函数 error 代表的是一个函数 用来处理失败之后的业务逻辑的函数 16 * 2.1 返回一些错误信息 17 * */ 18 19 20 21 22 /*处理默认参数*/ 23 if(!options || typeof options != 'object') return false; 24 /*如果没有传 使用默认的get方式提交*/ 25 var type = options.type || 'get'; 26 /*如果没有传 使用默认的当前路径*/ 27 var url = options.url || location.pathname; 28 /*强制 是false的时候就是同步 否则都是异步*/ 29 var async = options.async === false?false:true; 30 /*如果没有就是空对象*/ 31 var data = options.data || {}; 32 /*对象是无法进行传输 {name:'',age:''} 拼接字符串 name=xzz&age=18*/ 33 var dataStr = ''; 34 for(var key in data){ 35 dataStr+=key+'='+data[key]+'$'; 36 } 37 dataStr = dataStr && dataStr.slice(0,-1); 38 39 /*ajax封装编程*/ 40 /*初始化*/ 41 var xhr = new XMLHttpRequest(); 42 xhr.open(type,type == 'get'?url+'?'+dataStr:url,async); 43 /*请求头*/ 44 if(type == 'post'){ 45 xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 46 } 47 /*请求主体*/ 48 xhr.send(type=='get'?null:dataStr); 49 50 51 52 /*响应*/ 53 xhr.onreadystatechange = function () { 54 /*一定要完全完成通讯*/ 55 if(xhr.readyState == 4){ 56 if(xhr.status == 200){ 57 /*请求成功*/ 58 /*字符串 xml josn格式的字符串 数据转换*/ 59 /*获取响应类型*/ 60 var contentType = xhr.getResponseHeader("Content-Type"); 61 var result = null; 62 63 if(contentType.indexOf('xml')>-1){ 64 /*xml*/ 65 result = xhr.responseXML; 66 }else if(contentType.indexOf('json')>-1){ 67 /*json*/ 68 result = JSON.parse(xhr.responseText); 69 }else{ 70 /*string*/ 71 result = xhr.responseText; 72 } 73 options.success && options.success(result); 74 75 }else{ 76 /*请求失败*/ 77 options.error && options.error({status:xhr.status,statusText:xhr.statusText}); 78 } 79 } 80 } 81 }; 82 83 /*get*/ 84 $.get = function (options) { 85 options.type = 'get'; 86 $.ajax(options); 87 } 88 /*post*/ 89 $.get = function (options) { 90 options.type = 'post'; 91 $.ajax(options); 92 }
注:简单写法,仅供参考。
相关文章推荐
- 简单封装了下基本的AJAX实现
- 自己写的封装好的简单的AJAX--javascript (改良版)
- html ajax 简单封装
- 自己动手简单封装ajax的get和post请求
- ajax简单封装
- 自己写的封装好的简单的AJAX--javascript
- Ajax Zero to Hero (2)入门代码的简单封装
- 自己封装的一个最简单的ajax
- Ajax代码简单封装。
- 原生AJAX封装的简单实现
- Ajax 简单封装
- ajax简单的封装一下
- ajax提交封装,简单仿Jquery
- Extjs读取更改或者发送ajax返回请求的结果简单封装
- ajax代码及简单封装
- 自己写的封装好的简单的AJAX--javascript (改良版)
- ajax的简单封装
- 《php---ajax简单示例---jquery内部运行原理》---jquery只是就ajax的一些功能进行了封装
- 一个简单的ajax封装
- 用原生JS对AJAX做简单封装的实例代码