原生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 相关文章推荐
跟着Jquery API学Jquery之一 选择器
Apr 07 Javascript
JQuery each()函数如何优化循环DOM结构的性能
Dec 10 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
Aug 15 Javascript
JS实现一个列表中包含上移下移删除等功能
Sep 24 Javascript
javascript实现淘宝幻灯片广告展示效果
Apr 27 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
May 28 Javascript
jquery实现鼠标滑过小图查看大图的方法
Jul 20 Javascript
BootStrap 模态框实现刷新网页并关闭功能
Jan 04 Javascript
JavaScript this绑定过程深入详解
Dec 07 Javascript
微信小程序实现消息框弹出动画
Apr 18 Javascript
使用react context 实现vue插槽slot功能
Jul 18 Javascript
微信接入之获取用户头像的方法步骤
Sep 23 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下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
ThinkPHP3.1的Widget新用法
2014/06/19 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
浅析Javascript ES6中的原生Promise
2016/08/25 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
使用python实现扫描端口示例
2014/03/29 Python
python实现telnet客户端的方法
2015/04/15 Python
Python解决八皇后问题示例
2018/04/22 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
pygame实现俄罗斯方块游戏(基础篇1)
2019/10/29 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
大学生思想汇报范文
2013/12/31 职场文书
白酒市场开发计划书
2014/01/09 职场文书
出国英文推荐信
2014/05/10 职场文书
欢迎标语大全
2014/06/21 职场文书
老干部工作先进事迹
2014/08/17 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
今日说法观后感
2015/06/08 职场文书
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python