原生js实现ajax方法(超简单)


Posted in Javascript onSeptember 20, 2016

上一篇文章写到原生js取代jquery的一些常用函数:原生js仿jquery一些常用方法,那么,ajax如何实现呢?如下是一个比较完整的ajax()

function ajax(){ 
  var ajaxData = { 
    type:arguments[0].type || "GET", 
    url:arguments[0].url || "", 
    async:arguments[0].async || "true", 
    data:arguments[0].data || null, 
    dataType:arguments[0].dataType || "text", 
    contentType:arguments[0].contentType || "application/x-www-form-urlencoded", 
    beforeSend:arguments[0].beforeSend || function(){}, 
    success:arguments[0].success || function(){}, 
    error:arguments[0].error || function(){} 
  } 
  ajaxData.beforeSend() 
  var xhr = createxmlHttpRequest();  
  xhr.responseType=ajaxData.dataType; 
  xhr.open(ajaxData.type,ajaxData.url,ajaxData.async);  
  xhr.setRequestHeader("Content-Type",ajaxData.contentType);  
  xhr.send(convertData(ajaxData.data));  
  xhr.onreadystatechange = function() {  
    if (xhr.readyState == 4) {  
      if(xhr.status == 200){ 
        ajaxData.success(xhr.response) 
      }else{ 
        ajaxData.error() 
      }  
    } 
  }  
} 
 
function createxmlHttpRequest() {  
  if (window.ActiveXObject) {  
    return new ActiveXObject("Microsoft.XMLHTTP");  
  } else if (window.XMLHttpRequest) {  
    return new XMLHttpRequest();  
  }  
} 
 
function convertData(data){ 
  if( typeof data === 'object' ){ 
    var convertResult = "" ;  
    for(var c in data){  
      convertResult+= c + "=" + data[c] + "&";  
    }  
    convertResult=convertResult.substring(0,convertResult.length-1) 
    return convertResult; 
  }else{ 
    return data; 
  } 
}

使用格式跟jquery的ajax差不多:

ajax({ 
  type:"POST", 
  url:"ajax.php", 
  dataType:"json", 
  data:{"val1":"abc","val2":123,"val3":"456"}, 
  beforeSend:function(){ 
    //some js code 
  }, 
  success:function(msg){ 
    console.log(msg) 
  }, 
  error:function(){ 
    console.log("error") 
  } 
})

以上就是小编为大家带来的原生js实现ajax方法(超简单)的全部内容了,希望对大家有所帮助,多多支持三水点靠木~

Javascript 相关文章推荐
javascript中强制执行toString()具体实现
Apr 27 Javascript
jquery实现左右滑动菜单效果代码
Aug 27 Javascript
javascript入门教程基础篇
Nov 16 Javascript
HTML的select控件美化
Mar 27 Javascript
Bootstrap实现各种进度条样式详解
Apr 13 Javascript
微信小程序图片选择区域裁剪实现方法
Dec 02 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
Dec 28 Javascript
jQuery代码优化方法总结
Jan 29 jQuery
JS中Object对象的原型概念基础
Jan 29 Javascript
layui自定义ajax左侧三级菜单
Jul 26 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
Sep 29 Javascript
Vue页面切换和a链接的本质区别详解
Nov 12 Javascript
原生js仿jquery一些常用方法(必看篇)
Sep 20 #Javascript
原生js封装的一些jquery方法(详解)
Sep 20 #Javascript
jQuery实现的自定义滚动条实例详解
Sep 20 #Javascript
jQuery在ie6下无法设置select选中的解决方法详解
Sep 20 #Javascript
jQuery简单倒计时效果完整示例
Sep 20 #Javascript
AngularJS中$watch和$timeout的使用示例
Sep 20 #Javascript
jQuery实现的网页换肤效果示例
Sep 20 #Javascript
You might like
在PHP中读取和写入WORD文档的代码
2008/04/09 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
调整小数的格式保留小数点后两位
2014/05/14 Javascript
jQuery实现仿百度帖吧头部固定导航效果
2015/08/07 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
JavaScript字符串对象
2017/01/14 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
基于JavaScript实现的折半查找算法示例
2017/04/14 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
微信小程序国际化探索实现(附源码地址)
2020/05/20 Javascript
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
Python自定义线程池实现方法分析
2018/02/07 Python
详解python读取image
2019/04/03 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
python 直接赋值和copy的区别详解
2019/08/07 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
大学在校生求职信范文
2013/11/21 职场文书
配件采购员岗位职责
2013/12/03 职场文书
中药专业毕业自荐书范文
2014/02/08 职场文书
结对共建工作方案
2014/06/02 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
小学语文的各类谚语(70首)
2019/08/15 职场文书
详解Laravel制作API接口
2021/05/31 PHP
OpenCV 图像梯度的实现方法
2021/07/25 Python