用原生JS对AJAX做简单封装的实例代码


Posted in Javascript onJuly 13, 2016

首先,我们需要xhr对象。这对我们来说不难,封装成一个函数。

var createAjax = function() { var xhr = null; try { //IE系列浏览器 xhr = new ActiveXObject("microsoft.xmlhttp");
  } catch (e1) { try { //非IE浏览器 xhr = new XMLHttpRequest();
    } catch (e2) { window.alert("您的浏览器不支持ajax,请更换!");
    }
  } return xhr;
};

然后,我们来写核心函数。

var ajax = function(conf) { // 初始化 //type参数,可选 var type = conf.type; //url参数,必填 var url = conf.url; //data参数可选,只有在post请求时需要 var data = conf.data; //datatype参数可选 var dataType = conf.dataType; //回调函数可选 var success = conf.success; if (type == null){ //type参数可选,默认为get type = "get";
  } if (dataType == null){ //dataType参数可选,默认为text dataType = "text";
  } // 创建ajax引擎对象 var xhr = createAjax(); // 打开 xhr.open(type, url, true); // 发送 if (type == "GET" || type == "get") {
    xhr.send(null);
  } else if (type == "POST" || type == "post") {
    xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
    xhr.send(data);
  }
  xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { if(dataType == "text"||dataType=="TEXT") { if (success != null){ //普通文本 success(xhr.responseText);
        }
      }else if(dataType=="xml"||dataType=="XML") { if (success != null){ //接收xml文档 success(xhr.responseXML);
        } 
      }else if(dataType=="json"||dataType=="JSON") { if (success != null){ //将json字符串转换为js对象 success(eval("("+xhr.responseText+")"));
        }
      }
    }
  };
};

最后,说明一下此函数的用法。

ajax({ type:"post",
    url:"test.jsp",
    data:"name=dipoo&info=good",
    dataType:"json",
    success:function(data){ alert(data.name); } });

以上这篇用原生JS对AJAX做简单封装的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jqgrid 简单学习笔记
May 03 Javascript
用js格式化金额可设置保留的小数位数
May 09 Javascript
chrome下img加载对height()的影响示例探讨
May 26 Javascript
javascript学习笔记(八)正则表达式
Oct 08 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
Mar 20 Javascript
JS实现黑客帝国文字下落效果
Sep 01 Javascript
jquery特效 点击展示与隐藏全文
Dec 09 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
Dec 18 Javascript
浅谈webpack打包之后的文件过大的解决方法
Mar 07 Javascript
浅谈React的最大亮点之虚拟DOM
May 29 Javascript
vue使用高德地图根据坐标定位点的实现代码
Aug 22 Javascript
jquery实现简单自动轮播图效果
Jul 29 jQuery
javascript类型系统——undefined和null全面了解
Jul 13 #Javascript
javascript类型系统——日期Date对象全面了解
Jul 13 #Javascript
浅谈javascript中关于日期和时间的基础知识
Jul 13 #Javascript
jQuery EasyUI菜单与按钮详解
Jul 13 #Javascript
JQuery对ASP.NET MVC数据进行更新删除
Jul 13 #Javascript
Javascript表单特效之十大常用原理性样例代码大总结
Jul 12 #Javascript
Bootstrap登陆注册页面开发教程
Jul 12 #Javascript
You might like
根德YB400的电路分析
2021/03/02 无线电
zend framework文件上传功能实例代码
2013/12/25 PHP
php汉字转拼音的示例
2014/02/27 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
Yii框架响应组件用法实例分析
2019/09/04 PHP
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
微信小程序日历效果
2018/12/29 Javascript
在vue中根据光标的显示与消失实现下拉列表
2019/09/29 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
Python运算符重载详解及实例代码
2017/03/07 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
python 日期排序的实例代码
2019/07/11 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
物业管理应届生求职信
2013/10/28 职场文书
2014年公司迎新年活动方案
2014/02/24 职场文书
2014年党的群众路线活动个人整改措施
2014/10/28 职场文书
2015年教研员工作总结
2015/05/26 职场文书
单位工资证明范本
2015/06/12 职场文书
Python基础之pandas数据合并
2021/04/27 Python
Nginx禁止ip访问或非法域名访问
2022/04/07 Servers