原生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与DropDownList 区别分析
Jan 01 Javascript
页面加载完毕后滚动条自动滚动一定位置
Feb 20 Javascript
AngularJs Modules详解及示例代码
Sep 01 Javascript
jQuery实现限制文本框的输入长度
Jan 11 Javascript
从零学习node.js之mysql数据库的操作(五)
Feb 24 Javascript
详解AngularJS controller调用factory
May 19 Javascript
Three.js开发实现3D地图的实践过程总结
Nov 20 Javascript
JS实现根据指定值删除数组中的元素操作示例
Aug 02 Javascript
angularjs手动识别字符串中的换行符方法
Oct 02 Javascript
js实现删除li标签一行内容
Apr 16 Javascript
vue+elementUI动态生成面包屑导航教程
Nov 04 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
Apr 29 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+mysql分页代码详解
2008/03/27 PHP
php getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
JSON 入门指南 想了解json的朋友可以看下
2009/08/26 Javascript
通过隐藏option实现select的联动效果
2009/11/10 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
js自定义QQ菜单效果
2017/01/10 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
小程序实现上下移动切换位置
2019/09/23 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
JavaScript代码简化技巧实例解析
2020/09/09 Javascript
Python中的日期时间处理详解
2016/11/17 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
详解Python 函数参数的拆解
2020/09/02 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
工程造价专业大专生求职信
2013/10/06 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
员工工作表扬信
2015/05/05 职场文书
python OpenCV学习笔记
2021/03/31 Python