原生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 防止刷新,后退,关闭
Aug 07 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
Dec 07 Javascript
文件编码导致jquery失效的解决方法
Jun 26 Javascript
提高jQuery性能的十个诀窍
Nov 14 Javascript
jtable列中自定义button示例代码
Nov 21 Javascript
javascript怎么禁用浏览器后退按钮
Mar 27 Javascript
jQuery中delegate()方法用法实例
Jan 19 Javascript
jQuery简单实现图片预加载
Apr 20 Javascript
jquery实现图片上传前本地预览功能
May 10 Javascript
js获取Html元素的实际宽度高度的方法
May 19 Javascript
详解vue中组件参数
Jul 09 Javascript
vscode 调试 node.js的方法步骤
Sep 15 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 和 COM
2006/10/09 PHP
PHP+XML 制作简单的留言本 图文教程
2009/11/02 PHP
Yii操作数据库的3种方法
2014/03/11 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
js切换div css注意的细节
2012/12/10 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
详解AngularJS验证、过滤器、指令
2017/01/04 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
Python内置函数dir详解
2015/04/14 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
详细分析python3的reduce函数
2017/12/05 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
flask框架配置mysql数据库操作详解
2019/11/29 Python
python 错误处理 assert详解
2020/04/20 Python
python下载的库包存放路径
2020/07/27 Python
浅谈anaconda python 版本对应关系
2020/10/07 Python
PHP两种查询函数array/row的区别
2013/06/03 面试题
业务副厂长岗位职责
2014/01/03 职场文书
第二批党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
寒假生活随笔
2015/08/15 职场文书
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android