原生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 相关文章推荐
游戏人文件夹程序 ver 4.03
Jul 14 Javascript
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
Aug 28 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
Mar 14 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
May 07 Javascript
jQuery中filter()方法用法实例
Jan 06 Javascript
用JavaScript实现对话框的教程
Jun 04 Javascript
jquery日历插件datepicker用法分析
Jan 22 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
Dec 14 Javascript
package.json文件配置详解
Jun 15 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
Mar 27 Javascript
浅谈webpack对样式的处理
Jan 05 Javascript
JavaScript类的继承操作实例总结
Dec 20 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中的integer类型使用分析
2010/07/27 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
jquery实用代码片段集合
2010/08/12 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
jQuery中事件与动画的总结分享
2016/05/24 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
python3常用的数据清洗方法(小结)
2019/10/31 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
维也纳通行证:Vienna PASS
2019/07/18 全球购物
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
乡镇保密工作责任书
2014/07/28 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
地震捐款简报
2015/07/21 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python