原生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 相关文章推荐
表单(FORM)的一些实用效果代码
Mar 25 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
Jun 10 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
Dec 30 Javascript
JS完成代码前最好对其做5件事
Apr 07 Javascript
JS显示表格内指定行html代码的方法
Mar 31 Javascript
JavaScript获取function所有参数名的方法
Oct 30 Javascript
AngularJS实现Model缓存的方式
Feb 03 Javascript
javascript之Boolean类型对象
Jun 07 Javascript
JS获取html元素的标记名实现方法
Oct 08 Javascript
使用canvas进行图像编辑的实例
Aug 29 Javascript
jquery 验证用户名是否重复代码实例
May 14 jQuery
jQuery实现的分页插件完整示例
May 26 jQuery
原生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
将OICQ数据转成MYSQL数据
2006/10/09 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
PHP中Fatal error session_start()错误解决步骤
2014/08/05 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
2014/05/14 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
Python3基础之函数用法
2014/08/13 Python
python 爬取微信文章
2016/01/30 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
在职人员函授期间自我评价分享
2013/11/08 职场文书
公司合作协议书范本
2014/04/18 职场文书
公司年夜饭通知
2015/04/25 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
go设置多个GOPATH的方式
2021/05/05 Golang
Python 数据科学 Matplotlib图库详解
2021/07/07 Python
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers