详解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插件
Mar 29 jQuery
使用jQuery和ajax代替iframe的方法(详解)
Apr 12 jQuery
jQuery extend()详解及简单实例
May 06 jQuery
jQuery Collapse1.1.0折叠插件简单使用
Aug 28 jQuery
jQuery读取本地的json文件(实例讲解)
Oct 31 jQuery
jQuery实现的简单无刷新评论功能示例
Nov 08 jQuery
jQuery中将json数据显示到页面表格的方法
May 27 jQuery
JQuery特殊效果和链式调用操作示例
May 13 jQuery
jquery中为什么能用$操作
Jun 18 jQuery
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 jQuery
Javascript和jquery在selenium的使用过程
Oct 31 jQuery
jQuery实现弹幕特效
Nov 29 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
php中在PDO中使用事务(Transaction)
2011/05/14 PHP
PHP删除数组中的特定元素的代码
2012/06/28 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
php绘制一条直线的方法
2015/01/24 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
js单例模式的两种方案
2013/10/22 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
基于jQuery实现左右图片轮播(原理通用)
2015/12/24 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
django实现后台显示媒体文件
2020/04/07 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
儿子婚宴答谢词
2014/01/09 职场文书
电焊工岗位职责
2014/03/06 职场文书
建党伟业观后感
2015/06/01 职场文书
安全生产隐患排查制度
2015/08/05 职场文书