原生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实现的超出屏幕时把固定层变为定位层的代码
Feb 23 Javascript
jQuery在vs2008及js文件中的无智能提示的解决方法
Dec 30 Javascript
js简单实现竖向tab选项卡的方法
May 04 Javascript
简介JavaScript中setUTCSeconds()方法的使用
Jun 12 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
Aug 24 Javascript
js创建jsonArray传输至后台及后台全面解析
Apr 11 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
Jul 22 Javascript
bootstrap配合Masonry插件实现瀑布式布局
Jan 18 Javascript
JavaScript中递归实现的方法及其区别
Sep 12 Javascript
vue-cli中的babel配置文件.babelrc实例详解
Feb 22 Javascript
vue下载excel的实现代码后台用post方法
May 10 Javascript
使用 Vue 实现一个虚拟列表的方法
Aug 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 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
PHP多例模式介绍
2013/06/24 PHP
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
JQuery从头学起第二讲
2010/07/04 Javascript
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
javascript遍历json对象的key和任意js对象属性实例
2017/03/09 Javascript
JavaScript事件方法(实例讲解)
2017/06/27 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
python加载自定义词典实例
2019/12/06 Python
Pyqt5自适应布局实例
2019/12/13 Python
如何基于Python实现自动扫雷
2020/01/06 Python
事务机电主管工作职责
2014/02/25 职场文书
请假条怎么写
2014/04/10 职场文书
天下第一关导游词
2015/02/06 职场文书
开学典礼致辞
2015/07/29 职场文书
mongodb数据库迁移变更的解决方案
2021/09/04 MongoDB
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技