原生封装ajax
2016-05-10 22:33
302 查看
function ajax(opts){ //一.设置默认参数 var defaults = { method: 'GET', url: '', data: '', async: true, cache: true, contentType: 'application/x-www-form-urlencoded', success: function (){}, error: function (){} }; //二.用户参数覆盖默认参数 for(var key in opts){ defaults[key] = opts[key]; } //三.对数据进行处理 if(typeof defaults.data === 'object'){ //处理 data var str = ''; for(var key in defaults.data){ str += key + '=' + defaults.data[key] + '&'; } defaults.data = str.substring(0, str.length - 1); } defaults.method = defaults.method.toUpperCase(); //处理 method defaults.cache = defaults.cache ? '' : '&' + new Date().getTime() ;//处理 cache if(defaults.method === 'GET' && (defaults.data || defaults.cache)) defaults.url += '?' + defaults.data + defaults.cache; //处理 url //四.开始编写ajax //1.创建ajax对象 var oXhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); //2.和服务器建立联系,告诉服务器你要取什么文件 oXhr.open(defaults.method, defaults.url, defaults.async); //3.发送请求 if(defaults.method === 'GET') oXhr.send(null); else{ oXhr.setRequestHeader("Content-type", defaults.contentType); oXhr.send(defaults.data); } //4.等待服务器回应 oXhr.onreadystatechange = function (){ if(oXhr.readyState === 4){ if(oXhr.status === 200) defaults.success.call(oXhr, oXhr.responseText); else{ defaults.error(); } } }; }
欢迎指正!
相关文章推荐
- uva 361 - Cops and Robbers(凸包)
- Java 进行 RSA 加解密时不得不考虑到的那些事儿
- uva 230 Borrowers(摘)<vector>"结构体“ 膜拜!
- poj-1273 Drainage Ditches(最大流基础题)
- GPU memory 结构
- 【C语言】输入一个整数,输出该数二进制表示中1的个数(三种方法)
- Spark-ML-01-小试spark分析离线商品信息
- NYOJ VF(数位dp)
- 链表队列
- c++数字和字符串的转换
- 你真的会二分查找吗?
- yii2缓存的介绍和使用
- OpenCL buffer使用及两个简单例子
- codevs 4909 寂寞的堆(写的好丑0.0)
- 剑指offer之面试题10二进制中1的个数
- python numpy模块玩转矩阵与科学计算
- [SCU 4500] 神舟的宝藏 (数位DP)
- 关于数组的排序问题(冒泡排序,选择排序,插入排序)
- js与android代码的交互
- C++作业五