项目中有时候用不到jq,需要了解xmlhttp原理,自己写一套函数请求和发送数据!

/* 封装ajax函数
* @param {string}opt.type http连接的方式,包括POST和GET两种方式
* @param {string}opt.url 发送请求的url
* @param {boolean}opt.async 是否为异步请求,true为异步的,false为同步的
* @param {object}opt.data 发送的参数,格式为对象类型
* @param {function}opt.success ajax发送并接收成功调用的回调函数
*/
function ajax(options) {
options = options || {};
options.method = options.method.toUpperCase() || 'POST';
options.url = options.url || '';
options.async = options.async || true;
options.data = options.data || null;
options.success = options.success || function () {};
options.error = options.error || function () {}; var xmlhttp = null;
if(XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
var params = [];
for(key in params) {
params.push(key + '=' + params[key]);
}
var postData = params.join('&'); if(options.method == 'GET') {
xmlhttp.open(options.method, options.url, options.async);
xmlhttp.send();
} else if (options.method == 'POST') {
xmlhttp.open(options.method, options.url, options.async);
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send(postData);
} xmlhttp.onreadystatechange = function () {
if(xmlhttp.readyState == 4) {
switch (xmlhttp.status) {
case 200:
options.success(xmlhttp.responseText);
break;
case 404:
options.error('Not Found');
break;
default:
options.error('未知错误');
}
}
};
} // 使用
ajax({
method: 'POST',
url: './server/demo_get.json',
data: {
data1: 'aaa',
data2: 'bbb'
},
success: function (response) {
console.log(response);
},
error: function (err) {
console.log(err);
}
});

这个是从网上学习并改造的,自己重写了一遍,可以运行。

自封装ajax的更多相关文章

  1. 使用原生JS封装Ajax

    使用原生 的JS封装 Ajax,实现 仿JQuery的Ajax,post,get三种异步请求方式: var MAjax = { //根据浏览器创建异步对象 createXhr: function () ...

  2. 原生javascript封装ajax和jsonp

    在我们请求数据时,完成页面跨域,利用原生JS封装的ajax和jsonp: <!DOCTYPE html> <html lang="en"> <head ...

  3. AJAX编程-封装ajax工具函数

    即 Asynchronous [e'sɪŋkrənəs] Javascript And XML,AJAX 不是一门的新的语言,而是对现有技术的综合利用.本质是在HTTP协议的基础上以异步的方式与服务器 ...

  4. javascript 【封装AJAX】

    post function createXHR() { if (typeof XMLHttpRequest != 'undefined') { return new XMLHttpRequest(); ...

  5. 封装ajax原理

    封装ajax原理 首先处理 用户如果不传某些参数,设置默认值 type默认get 默认url为当前页 默认async方式请求 data数据默认为{} 处理用户传进来的参数对象 遍历,拼接成key=va ...

  6. 04.封装ajax

    <script> //封装ajax // 函数名 ajax // 函数的参数 // url: 请求的地址 // type: 请求的方式 get /post // data: 要上传的数据 ...

  7. 自定义封装ajax,复制即可用

    支持get.post请求 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  8. 封装ajax,让调用变得简单优化

    思考一下: 通常我们在使用ajax来发送接口请求时,每一次都会调用ajax固定的元素,比如data.url.method.success.error等.那么我们想一下能不能先把ajax封装起来,在每次 ...

  9. 原生JS封装ajax方法

    http://blog.sucaijiayuan.com/article/89 jquery框架的ajax方法固然好用,但是假如某天我们的项目不能引入jquery或项目需求很简单,没有很多交互功能,只 ...

  10. 封装Ajax框架!(代码篇)

    写在前面的话,如果中间有什么不明白的,请先看封装ajax框架!(前言篇) 1.添写一个封闭函数 (function(){})(); 在一个项目中,可能会引用多个js框架,如果函数名相同,会有命名冲突, ...

随机推荐

  1. 在 MVC 中使用 ninject Lazy Load的一个想法

    这这里先声明一下,引用了一个 (http://www.edcourtenay.co.uk/musings-of-an-idiot/2012/11/23/lazy-binding-with-ninjec ...

  2. Hive内置函数和自定义函数的使用

    一.内置函数的使用 查看当前hive版本支持的所有内置函数 show function; 查看某个函数的使用方法及作用,比如查看upper函数 desc function upper; 查看upper ...

  3. Bootstrap点击弹出注册登录

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. mysql id_logfile 日志

    ib_logfile 文件原理 ib_logfile0 是innodb中事务日志,记录系统的回滚,重做日志,记录的是文件的物理更改,存放位置my.ini 中的 datadir="D:\php ...

  5. python学习,day2:python字符串和二进制之间的互换

    在python3中,byte二进制和striing字符串之间不能直接操作,需要进行编码和解码才行.下面是个例子 msg = '我爱北京天安门' print(msg) print(msg.encode( ...

  6. C - 思考使用差分简化区间操作

    FJ's N (1 ≤ N ≤ 10,000) cows conveniently indexed 1..N are standing in a line. Each cow has a positi ...

  7. ansys14.0 从入门到精通

    凌桂龙 李战分 2013.2 清华大学 FLUENT流体计算应用教程 索书号:TB126-39 ZW2.1     单元 结点 和 自由度 载荷 与 边界条件 : 关系 就是约束 , 边界条件是 结构 ...

  8. SpringMVC 商城项目

    1.  商城视频中有word   笔记文档

  9. [转] 用javascript修改css伪类的几种方法

    用javascript修改css伪类的几种方法: Modify pseudo element styles with JavaScript http://pankajparashar.com/post ...

  10. 从source安装python3.5和pip

    按顺序来,先装上python3.5,source安装,命令是 ./configure --prefix="你想要的路径" make make install 然后是安装pip,但是 ...