详解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的ajax实现二级联动效果
Jul 13 jQuery
jQuery.Ajax()的data参数类型详解
Jul 23 jQuery
使用jquery+iframe做一个ajax上传效果(实例)
Aug 24 jQuery
jQuery实现图片上传预览效果功能完整实例【测试可用】
May 28 jQuery
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
Jun 14 jQuery
jQuery实现表单动态添加与删除数据操作示例
Jul 03 jQuery
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 jQuery
JQueryDOM之样式操作
Mar 27 jQuery
jquery简单实现纵向的无缝滚动代码实例
Apr 01 jQuery
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
May 04 jQuery
jquery实现Ajax请求的几种常见方式总结
May 28 jQuery
jQuery操作选中select下拉框的值代码实例
Feb 07 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
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
php教程 插件机制在PHP中实现方案
2012/11/02 PHP
PHP创建XML接口示例
2019/07/04 PHP
(function(){})()的用法与优点
2007/03/11 Javascript
分页栏的web标准实现
2011/11/01 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
python3实现全角和半角字符转换的方法示例
2017/09/21 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
python采集微信公众号文章
2018/12/20 Python
python判断自身是否正在运行的方法
2019/08/08 Python
对python中UDP,socket的使用详解
2019/08/22 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
html5教程画矩形代码分享
2013/12/04 HTML / CSS
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
开水果连锁店创业计划书
2013/12/29 职场文书
九年级数学教学反思
2014/02/02 职场文书
《胡杨》教学反思
2014/02/16 职场文书
数学教育专业求职信
2014/07/22 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
公司租车协议书
2015/01/29 职场文书
2015年高校保卫处工作总结
2015/07/23 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python