一、jQuery框架中的Ajax简介

Ajax技术的核心是XMLHTTPRequest对象,该对象是Ajax实现的关键,发送异步请求、接收服务器端的响应以及执行回调等操作都是通过XMLHTTPRequest对象来完成的。

jQuery框架对Ajax操作进行了封装,在jQuery框架的Ajax模块中提供了很多方法用于网络编程。我们主要从Ajax网络请求、Ajax事件以及序列化等方面讲解。

二、jQuery框架中的Ajax网络请求

jQuery框架中为我们提供的发送网络请求方法主要有:

  • load方法
  • ajax方法
  • get方法
  • post方法
  • getScript方法
  • getJSON方法

① load方法

语法 jQ.load(url,[data],[callback])

参数

- url 资源的请求路径
- data 发送请求时提交的参数,支持查询字符串和JSON对象格式
- callback 加载完成的回调函数,3形参为:响应体 + 状态 + 请求对象

说明该方法请求远程的资源,并插入到选中的jQ实例对象中。

注意

- 默认发送GET请求,如果传递参数(JSON对象)则发送POST请求。
- 支持对返回的数据进行筛选

代码示例

//01 直接加载文件中的数据
//默认发送的是GET请求
//$("#demo").load("php/test.html"); //02 加载文件中的数据,获取其中的某一部分(进行筛选)
//$("#demo").load("php/test.html span"); //参数在请求体中进行传递
$("#demo").load("php/test.html span",{"namme":"zs"});

② ajax方法

语法 $.ajax(url,[settings]) | $.ajax(settings)

常用参数说明

- url 资源的请求路径
- data 发送请求时提交的参数,支持查询字符串和JSON对象格式
- async 是否异步发送网络请求
- cache 是否进行缓存处理
- context 指定回调函数中的this指针
- dataType 预期服务器返回的数据类型
- timeout 请求的超时时间
- beforeSend 请求发送前执行的回调函数
- complete 请求完成后执行的回调函数
- error 请求失败执行的回调函数
- success 请求成功执行的回调函数

说明该方法是jQuery框架中最底层的Ajax实现,用于发送网络请求。

注意

- 最简单的情况下,$.ajax()可以不带任何参数直接使用。
- 所有的选项都可以通过$.ajaxSetup()函数来进行全局设置。

代码示例

$.ajax({
"url":"php/03-ajax.php", //设置请求路径
"type":"get", //设置请求方法,不区分大小写
"success":function (res,status,xhr) {
//请求成功的回调
$("#demo").html(res); //获取响应状态码
console.log(status); //获取请求的状态
console.log(xhr); //获取请求对象本身
console.log(this); //获取上下文
},
"error":function (res) {
//请求失败的回调函数
console.log("失败");
console.log(res);
},
//"data":"name=ls" //参数:查询字符串形式
"data":{"name":"ls"}, //参数:JSON对象形式
"timeout":10, //设置请求超时的时间
statusText:timeout
"context":obj, //设置回调函数中this的指向
"complete":function (res) {
console.log("请求完成");
console.log(res);
}
});

③ get和post方法

语法

[1]$.get(url,[data],[callback],[type])

[2]$.post(url,[data],[callback],[type])

参数

- url 资源的请求路径
- data 发送请求时提交的参数
- callback 请求成功的回调函数
- type 服务器端返回内容的格式:包括xml、html、json、script等

GET和POST对比

- GET请求参数跟在URL后,POST请求参数作为请求体发送。
- GET请求对参数大小有限制,而POST请求理论上不受限制。
- GET请求的数据会被浏览器缓存,存在严重的安全性问题。
- 服务器端读取数据的方式不同。在PHP中,区分为\$_GET和\$_POST。

代码示例

//发送请求获取服务器返回的文本,把div的内容替换掉
//第一个参数:url请求路径(必传)
//第二个参数:参数 支持两种形式[查询字符串][JSON对象]
//第三个参数:success(response,status,xhr)
// 请求成功的回调
// response:服务器返回的响应体
// status:状态说明[success-error]
// xhr:请求对象
//第四个参数:预期返回的数据类型:json|script|jsonP等
$.get("php/03-get.php",{"param1":"value1"},
function (response,status,xhr) {
console.log(response);
console.log(status);
console.log(xhr);
}
) //注意点:GET请求请求路径一样会缓存,POST请求不会缓存
$.post("php/04-post.php",{"param1":"value1"},
function (response,status,xhr) {
console.log(response);
console.log(status);
console.log(xhr);
}
)

④ getScript和getJson方法

jQuery框架提供了getScript和getJson方法来直接加载js文件和JSON数据

语法

[1] $.getScript(url,[callBack])

[2] $.getJson(url,[callBack])

说明

- getScript方法用于加载js文件,并自动执行。
- getJson方法用于加载JSON数据。

代码示例

$.getScript("test.js", function(){
//加载完成后执行的回调函数
alert("加载并执行JS文件");
});

三、jQuery框架中的Ajax事件方法

jQuery框架中除了提供上述方法来发送网络请求外,还提供了一些事件方法来对调用Ajax方法过程中的HTTP请求进行精细控制。通过jQuery提供的一些自定义全局函数,能够为各种与Ajax相关的事件注册回调函数。jQuery的Ajax全局事件方法如下:

[1] ajaxStart(callBack) =>检测到网络请求开始发送会触发,1次

[2] ajaxStop(callBack) =>检测到网络请求结束会触发,1次

[3] ajaxSend(callBack) =>检测到网络请求开始发送会触发,N次

[4] ajaxComplete(callBack)=>检测到网络请求结束会触发,N次

[5] ajaxError(callBack) => 网络请求失败会触发

[6] ajaxSuccess(callBack) => 网络请求成功会触发

$(document).ajaxStart(function () {
console.log("第一个已经开始+++++");
$("#demoID").show(1000);
})
$(document).ajaxStop(function () {
console.log("最后一个已经结束+++++");
$("#demoID").hide(1000);
})
$(document).ajaxSend(function () {
console.log("开始发送网络请求___");
})
$(document).ajaxComplete(function () {
console.log("发送网络请求完成___");
})
$.ajax({ //发送网络请求--A
"url":"php/06-other.php",
"type":"GET",
"success":function (res,status,xhr) {
console.log("网络请求成功--1");
}
})
$.ajax({ //发送网络请求--B
"url":"php/06-other.php",
"type":"GET",
"success":function (res,status,xhr) {
console.log("网络请求成功--2");
}
})
$(document).ajaxError(function () {
console.log("请求失败");
})
$(document).ajaxSuccess(function () {
console.log("请求成功");
})

四、jQuery框架中的序列化方法

在开发的时候,经常需要把表单中的数据作为网络请求的参数,如果一个一个的获取再拼接成查询字符串那么相当的麻烦,jQuery框架中为我们提供了两个对应的方法,可以方便解决该需求。

serialize方法能够将DOM元素内容序列化为查询字符串。

serializeArray方法可以将DOM元素序列化后返回JSON格式的数据。

代码示例

<body>
<form>
<input type="text" name="username" id="demo1">
<input type="text" name="password" id="demo2">
</form>
<button>按钮</button>
<script>
$("button").click(function () {
$.ajax({
"url":"php/07-get.php",
//"data":"username="+$("#demo1").val()+"&password=" +$("#demo2").val(),
"data":$("form").serialize(),
"success":function (res) {
console.log(res);
}
})
//把表单中的key-value按照固定的格式拼接为查询字符串:username=lisi&password=abcd
console.log($("form").serialize());
console.log($("form").serializeArray());
//[{"username":"zhangsan"},{"password":"123"}];
})
</script>
</body>

前端开发系列072-JQuery篇之框架Ajax模块的更多相关文章

  1. 【前端开发系列】—— 别说你不会Ajax

    之前一直都是用封装好的Ajax,所以一直很好奇它是如何使用和实现的.这里正好就进行一下学习,下面是Ajax的一个时间图. 设置触发条件 这里模拟一个使用场景,就是在用户登陆时,异步的对用户名以及密码进 ...

  2. ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理

    在前面两篇随笔<ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理>和<ABP开发框架前后端开发系列---(8)ABP框架之Winform界面的开发过程>开始 ...

  3. openlayers5-webpack 入门开发系列一初探篇(附源码下载)

    前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...

  4. leaflet-webpack 入门开发系列一初探篇(附源码下载)

    前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...

  5. web前端开发学习:jQuery的原型中的init

    web前端开发学习:jQuery的原型中的init 有大量web前端开发工具及学习资料,可以搜群[ web前端学习部落22群 ]进行下载,遇到学习问题也可以问群内专家以及课程老师哟 jQuery.fn ...

  6. jQuery系列 第八章 jQuery框架Ajax模块

    第八章 jQuery框架Ajax模块 8.1 jQuery框架中的Ajax简介 Ajax技术的核心是XMLHTTPRequest对象,该对象是Ajax实现的关键,发送异步请求.接收服务器端的响应以及执 ...

  7. 【Windows10 IoT开发系列】配置篇

    原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry ...

  8. 前端开发 vue,angular,react框架对比1

    转载自:https://www.cnblogs.com/hubgit/p/6633214.html 首先,我们先了解什么是MVX框架模式? MVX框架模式:MVC+MVP+MVVM 1.MVC:Mod ...

  9. [置顶]【实用 .NET Core开发系列】- 导航篇

    前言 此系列从出发点来看,是 上个系列的续篇, 上个系列因为后面工作的原因,后面几篇没有写完,后来.NET Core出来之后,注意力就转移到了.NET Core上,所以再也就没有继续下去,此是原因之一 ...

  10. Android Metro风格的Launcher开发系列第三篇

    前言: 各位小伙伴,又到了每周更新文章了时候了,本来是周日能发出来呢,这不是赶上清明节吗,女王大人发话了,清明节前两天半陪她玩,只留给我周一下午半天时间写博客,哪里有女王哪里就有压迫呀有木有!好了闲话 ...

随机推荐

  1. unity手机花屏

    关于Camera组件中Clear Flags的理解 - 知乎 (zhihu.com) https://blog.csdn.net/yanchezuo/article/details/77337755 ...

  2. 探秘Transformer系列之(25)--- KV Cache优化之处理长文本序列

    探秘Transformer系列之(25)--- KV Cache优化之处理长文本序列 目录 探秘Transformer系列之(25)--- KV Cache优化之处理长文本序列 0x00 概述 0x0 ...

  3. 机器人操作系统ROS2之安装(Ubuntu 24)

    根据官网说明,ROS2是支持MAC的,本来打算在手头的MAC 15.3.2装一个,虽然要自己编译ROS2系统,但是想着比虚拟机性能好,就兴冲冲的开始了,也没在意官网提示尽量还是装安装版.最后折腾了几天 ...

  4. 可持久化 01-trie 简记

    本文略过了 trie 和 可持久化的介绍,如果没学过请先自学. 在求给定一个值 \(k\) 与区间中某些值的异或最大值时,可以考虑使用在线的数据结构可持久化 01-trie 来维护. 01-trie ...

  5. 我的get请求为什么没有乱码??

    请求的方式有GET和POST两种放方式.这里主要说明GET请求的中文问题. 傻傻的我以为GET不能提交中文,需要改编码,但是我错了.改了编码反而乱码了??? 原因: Tomcat8 以后tomcat的 ...

  6. 操作系统综合题之“请填写信号量值并说明操作结果(正常、阻塞或唤醒。如阻塞或者唤醒,需说明阻塞或者被唤醒的是P1还是P2)(信号量操作流程-代码补充)”

    1.问题:题36表是两个同步进程的模拟执行,生产者将物品放入共享缓冲区供消费者使用,缓冲区可放2件物品,使用2个信号量,并置初值为S1 = 2,S2=0.现已知操作情况,请填写信号量值并说明操作结果( ...

  7. K8stools工具

    简介 K8stools 是一个 Kubernetes 日常运维辅助工具集,旨在提升运维效率,辅助平台治理与资源优化.功能涵盖资源分析.趋势评估.异常检测.行为采集.成本估算等常见场景,适用于 DevO ...

  8. 物联网之使用Vertx实现TCP最佳实践【响应式】

    小伙伴们,你们好呀,我是老寇,跟我一起学习使用Vertx实现TCP-Server 实现TCP-Server[响应式] Vertx-Core地址 实现过程 查看源码 代码比较简单,懒得讲解啦 代码比较简 ...

  9. 第2讲、Transformer架构图详解

    1. Transformer架构运行机制 Transformer架构是一种强大的神经网络结构,主要用于自然语言处理任务.它摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),完全基于注意力机制 ...

  10. odoo14使用的文件服务器【NFS】

    linux系统之间要文件共享实现方式:目前测试系统为Ubuntu20.04LTS 条件:1.保证两个系统都是linux:            2.目前实现是同一个局域网内: 服务端:172.26.1 ...