原生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 相关文章推荐
用js设置下拉框为只读的小技巧
Apr 10 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
Jun 14 Javascript
浅谈js中调用函数时加不加括号的问题
Jul 28 Javascript
Vue2.0表单校验组件vee-validate的使用详解
May 02 Javascript
创建简单的node服务器实例(分享)
Jun 23 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
Jun 28 Javascript
浅谈箭头函数写法在ReactJs中的使用
Aug 22 Javascript
基于vue实现可搜索下拉框定制组件
Mar 26 Javascript
SVG实现时钟效果
Jul 17 Javascript
vue 动态绑定背景图片的方法
Aug 10 Javascript
jQuery中each和js中forEach的区别分析
Feb 27 jQuery
Koa 中的错误处理解析
Apr 09 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 超链接 抓取实现代码
2009/06/29 PHP
如何判断php数组的维度
2013/06/10 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
JS实现合并json对象的方法
2017/10/10 Javascript
Vue组件全局注册实现警告框的实例详解
2018/06/11 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
详解从NodeJS搭建中间层再谈前后端分离
2018/11/13 NodeJs
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
百年校庆感言
2015/08/01 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python
vue封装数字翻牌器
2022/04/20 Vue.js
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android
Hive日期格式转换方法总结
2022/06/25 数据库