详解JavaScript原生封装ajax请求和Jquery中的ajax请求


Posted in jQuery onFebruary 14, 2019

前言:ajax的神奇之处在于JavaScript 可在不重载页面的情况与 Web 服务器交换数据,即在不需要刷新页面的情况下,就可以产生局部刷新的效果。Ajax 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),当然也可同步,这样就可使网页从服务器请求少量的信息,而不是整个页面。Ajax使我们的项目更小、更快,更友好,在前端开发有很高的地位,也是面试题的热点。本次测试是在localhost本地环境。

1、原生ajax

(1)html前端代码get请求方式创建一个ajax实例xhr open()方法传入三个参数,第一个是请求方式(一般为get和post),第二个参数是请求地址,第三个布尔值,true代表异步,false代表同步 send发送数据(get用不上,get发送的数据一般在链接后面,所以为显式传值,形式为键值对)绑定监听函数判断状态码 xhr.responseText得到返回数据

var xhr = new XMLHttpRequest() 
  xhr.open("GET","js/text.js",true) 
  xhr.send()          
  xhr.onreadystatechange = function(){  //
   if(xhr.readyState === 4&& xhr.status === 200){ 
    var data = xhr.responseText 
    var datas = JSON.parse(data) 
    console.log(datas) 
   }
  }

控制台输出

详解JavaScript原生封装ajax请求和Jquery中的ajax请求

(2)html前端代码post请求方式 post传递方式需要设置头信息,实测简单的请求不设置也是可以这里的传值是放在send()方法里面的,所以为隐式传值,其他的都和get相同

var xhr = new XMLHttpRequest() 
  xhr.open("POST","js/text.js",true) 
  xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
  xhr.send()         
  xhr.onreadystatechange = function(){  
   if(xhr.readyState === 4&& xhr.status === 200){ 
    var data = xhr.responseText 
    var datas = JSON.parse(data) 
    console.log(datas) 
   }
  }

控制台输出

详解JavaScript原生封装ajax请求和Jquery中的ajax请求

(3)被请求js代码

{
 "name":"小明",
 "age":24,
 "array":[1,51,3,4,4,6,64]
}

2、函数封装 这里函数封装的一个ajax方法,用的时候直接调用该方法,传入设置参数即可

参数有请求类型type,请求地址url,传入数据data(本案例无,没有也需要“”占位),请求成功返回函数success(也可多加一个失败返回函数)

(1)前端JS代码

function Ajax(type, url, data, success){
   
   var xhr = null; // 初始化xhr
   if(window.XMLHttpRequest){ //兼容IE
    xhr = new XMLHttpRequest();
   } else {
    xhr = new ActiveXObject('Microsoft.XMLHTTP')
   }
   
   var type = type.toUpperCase();
   
   var random = Math.random(); //创建随机数
   
   if(type == 'GET'){
    if(data){
     xhr.open('GET', url + '?' + data, true); //如果有数据就拼接
    } else {
     xhr.open('GET', url + '?t=' + random, true); //如果没有数据就传入一个随机数
    }
    xhr.send();
   
   } else if(type == 'POST'){
    xhr.open('POST', url, true);
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.send(data);
   }
   
   
   xhr.onreadystatechange = function(){  // 创建监听函数
    if(xhr.readyState == 4&&xhr.status == 200){
      success(xhr.responseText);
     } 
    }
  }
   
  Ajax('get', 'js/text.js', "", function(data){ //调用函数
   console.log(JSON.parse(data));
  });

(2)被请求js代码

{
 "name":"小明",
 "age":24,
 "array":[1,51,3,4,4,6,64]
}

控制台输出

详解JavaScript原生封装ajax请求和Jquery中的ajax请求

3、Jquery中的Ajax(先引入Jquery)(1)前端简单的JS代码 jquery中的ajax是被库封装好了的,我们直接用即可,下面是简单的ajax请求,它也有很多参数,但基础的就这些了

$.ajax({
   url:"./js/text.js", 
   type:"GET",  
   dataType:"json", 
   success:function(data){ 
    console.log(data)
   },
   error:function(res){ 
    console.log("请求失败!")
   }
  })

(2)被请求js代码

{
 "name":"小明",
 "age":24,
 "array":[1,51,3,4,4,6,64]
}

控制台输出

详解JavaScript原生封装ajax请求和Jquery中的ajax请求

以上如有不对之处,请大家多多指正,感谢大家对三水点靠木的支持。

jQuery 相关文章推荐
利用jQuery解析获取JSON数据
Apr 08 jQuery
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
Apr 11 jQuery
jquery中each循环的简单回滚操作
May 05 jQuery
jQuery.Ajax()的data参数类型详解
Jul 23 jQuery
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
Jan 25 jQuery
jQuery 防止相同的事件快速重复触发方法
Feb 08 jQuery
jQuery实现的简单歌词滚动功能示例
Jan 07 jQuery
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
Jan 18 jQuery
JQuery特殊效果和链式调用操作示例
May 13 jQuery
通过jQuery学习js类型判断的技巧
May 27 jQuery
jQuery 图片查看器插件 Viewer.js用法简单示例
Apr 04 jQuery
jQuery实现朋友圈查看图片
Sep 11 jQuery
Jquery实现无缝向上循环滚动列表的特效
Feb 13 #jQuery
jquery无缝图片轮播组件封装
Nov 25 #jQuery
详解如何使用webpack打包多页jquery项目
Feb 01 #jQuery
JQuery中queue方法用法示例
Jan 31 #jQuery
AJAX在JQuery中的应用详解
Jan 30 #jQuery
jQuery访问json文件中数据的方法示例
Jan 28 #jQuery
jQuery实现的网站banner图片无缝轮播效果完整实例
Jan 28 #jQuery
You might like
phpMyAdmin 安装及问题总结
2009/05/28 PHP
PHP获取MAC地址的函数代码
2011/09/11 PHP
PHP常用操作类之通信数据封装类的实现
2017/07/16 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
js GridView 实现自动计算操作代码
2009/03/25 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
js实现简单的手风琴效果
2017/02/27 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
Python ftp上传文件
2016/02/13 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
车间班组长岗位职责
2013/11/13 职场文书
后勤采购员岗位职责
2013/12/19 职场文书
个人党性分析材料
2014/12/19 职场文书
实习指导教师评语
2014/12/30 职场文书
高一地理教学工作总结
2015/08/12 职场文书
2016个人先进事迹材料范文
2016/03/01 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers