用原生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 相关文章推荐
jQuery dialog 异步调用ashx,webservice数据的代码
Aug 03 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
May 07 Javascript
js showModalDialog弹出窗口实例详解
Jan 07 Javascript
jQuery菜单插件superfish使用指南
Apr 21 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
Sep 20 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
Oct 18 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
Mar 20 Javascript
vue 运用mock数据的示例代码
Nov 07 Javascript
Angular2使用vscode断点调试ts文件的方法
Dec 13 Javascript
JS实现的邮箱提示补全效果示例
Jan 30 Javascript
js里面的变量范围分享
Jul 18 Javascript
JavaScript parseInt0.0000005打印5原理解析
Jul 23 Javascript
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
第一节--面向对象编程
2006/11/16 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
2011/09/25 PHP
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
2015/01/13 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
使用bootstrap插件实现模态框效果
2017/05/10 Javascript
理解javascript async的用法
2017/08/22 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
Python文件操作基础流程解析
2020/03/19 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
CSS中几个与换行有关的属性简明总结
2014/04/15 HTML / CSS
班组长安全职责
2014/01/05 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
如何写好开幕词?
2019/06/24 职场文书