详解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插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
Apr 02 jQuery
jQuery实现百度登录框的动态切换效果
Apr 21 jQuery
jQuery插件开发发送短信倒计时功能代码
May 09 jQuery
jQuery模拟爆炸倒计时功能实例代码
Aug 21 jQuery
基于jQuery的左滑出现删除按钮的示例
Aug 29 jQuery
jQuery选择器之属性过滤选择器详解
Sep 28 jQuery
jQuery实现的简单无刷新评论功能示例
Nov 08 jQuery
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
Jul 31 jQuery
jQuery实现的别踩白块小游戏完整示例
Jan 07 jQuery
使用jquery的cookie实现登录页记住用户名和密码的方法
Mar 13 jQuery
基于jQuery的时间戳与日期间的转化
Jun 21 jQuery
jQuery实现滑动开关效果
Aug 02 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
德生9700DX电路分析
2021/03/02 无线电
php代码把全角数字转为半角数字
2007/12/10 PHP
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
2015/09/01 Javascript
js实现遍历含有input的table实例
2015/12/07 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
webpack4打包vue前端多页面项目
2018/09/17 Javascript
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
Vue递归实现树形菜单方法实例
2018/11/06 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
Flask入门教程实例:搭建一个静态博客
2015/03/27 Python
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
教育科学研究生自荐信
2013/10/09 职场文书
教师简历自我评价
2014/02/03 职场文书
迎新晚会策划方案
2014/06/13 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
期末复习计划
2015/01/19 职场文书
学风建设主题班会
2015/08/17 职场文书
六年级语文教学反思
2016/03/03 职场文书