一、了解Ajax

    • 什么是Ajax

Ajax 的全称是 Asynchronous Javascript And XML(异步 JavaScript 和 XML)。

通俗的理解:在网页中利用 XMLHttpRequest 对象和服务器进行数据交互的方式,就是Ajax。

2. 为什么要学Ajax

之前所学的技术,只能把网页做的更美观漂亮,或添加一些动画效果,但是,Ajax能让我们轻松实现网页与服务器之间的数据交互。

3. Ajax的典型应用场景

3.1 用户名检测

注册用户时,通过 ajax 的形式,动态检测用户名是否被占用

3.2 搜索提示

当输入搜索关键字时,通过 ajax 的形式,动态加载搜索提示列表

3.3 数据分页显示

当点击页码值的时候,通过 ajax 的形式,根据页码值动态刷新表格的数据

3.4 数据的增删改查

数据的添加、删除、修改、查询操作,都需要通过 ajax 的形式,来实现数据的交互

二、jQuery中的Ajax

    • 了解jQuery中的Ajax

浏览器中提供的 XMLHttpRequest 用法比较复杂,所以 jQuery 对 XMLHttpRequest 进行了封装,提供了一系列 Ajax 相关的函数,极大地降低了 Ajax 的使用难度。

jQuery 中发起 Ajax 请求最常用的三个方法如下:

$.get(); //一般是从服务器获取数据

$.post(); //一般是向服务器提交数据

$.ajax(); //既可以获取数据,也可以提交数据

2. $.get()函数的语法

jQuery 中 $.get() 函数的功能单一,专门用来发起 get 请求,从而将服务器上的资源请求到客户端来进行使用。

$.get(url, [data], [callback]);

其中,三个参数各自代表的含义如下:

参数名

参数类型

是否必选

说明

url

string

要请求的资源地址

data

object

请求资源期间要携带的参数

callback

function

请求成功时的回调函数

2.1 $.get()发起不带参数的请求

使用 $.get() 函数发起不带参数的请求时,直接提供请求的 URL 地址和请求成功之后的回调函数即可,示例代码如下:

  <script src="./lib/jquery.js"></script><button id="btnGET">发起不带参数的GET请求</button><script>$(function () {// 获取按钮元素,添加绑定事件,添加回调函数$('#btnGET').on('click', function () {$.get('http://www.liulongbin.top:3006/api/getbooks', function (res) {console.log(res); // 这里的 res 是服务器返回的数据})})})</script>

2.2 $.get()发起带参数的请求

使用 $.get() 函数发起带参数的请求时,需要指定参数,示例代码如下:

  <script src="./lib/jquery.js"></script><button id="btnGETINFO">发起单参数的GET请求</button><script>$(function () {$('#btnGETINFO').on('click', function () {// 通过对象指定携带的参数$.get('http://www.liulongbin.top:3006/api/getbooks', { id: 1 }, function (res) {console.log(res)})})})</script>

3. $.post()函数的语法

jQuery 中 $.post() 函数的功能单一,专门用来发起 post 请求,从而向服务器提交数据。

$.post(url, [data], [callback]);

其中,三个参数各自代表的含义如下:

参数名

参数类型

是否必选

说明

url

string

提交数据的地址

data

object

要提交的数据

callback

function

数据提交成功时的回调函数

3.1 $.post()向服务器提交数据

使用 $post() 向服务器提交数据的示例代码如下:

  <script src="./lib/jquery.js"></script><button id="btnPOST">发起POST请求</button><script>$(function () {$('#btnPOST').on('click', function () {$.post('http://www.liulongbin.top:3006/api/addbook', { bookname: '活着', author: '余华', publisher: '天津图书出版社' }, function (res) {console.log(res)})})})</script>

4. $.ajax()函数的语法

相比于 $.get() 和 $.post() 函数,jQuery 中提供的 $.ajax() 函数,是一个功能比较综合的函数,它允许我们对 Ajax 请求进行更详细的配置。

$.ajax({
type: '', // 请求的方式,例如 GET 或 POST
url: '', // 请求的 URL 地址
data: { }, // 这次请求要携带的数据
success: function(res) { } // 请求成功之后的回调函数
});

4.1 使用$.ajax()发起GET请求

使用 $.ajax() 发起 GET 请求时,只需要将 type 属性的值设置为 'GET' 即可:

  <script src="./lib/jquery.js"></script><button id="btnGET">发起GET请求</button><script>$(function () {$('#btnGET').on('click', function () {$.ajax({type: 'GET', // 请求的方式,大小写都可url: 'http://www.liulongbin.top:3006/api/getbooks', // 请求的 URL 地址data: { // 这次请求要携带的数据:要查看id为1的那一条信息id: 1 },success: function (res) { // 请求成功之后的回调函数console.log(res)}})})})</script>

4.2 使用$.ajax()发起POST请求

使用 $.ajax() 发起 POST 请求时,只需要将 type 属性的值设置为 'POST' 即可:

  <script src="./lib/jquery.js"></script><button id="btnPOST">发起POST请求</button><script>$(function () {$('#btnPOST').on('click', function () {$.ajax({type: 'POST', // 请求的方式url: 'http://www.liulongbin.top:3006/api/addbook', // 请求的 URL 地址data: { // 要提交给服务器的数据bookname: '史记',author: '司马迁',publisher: '上海图书出版社'},success: function (res) { // 请求成功之后的回调函数console.log(res)}})})})</script>

三、封装自己的Ajax函数

    • 要实现的效果

模仿jQuery封装自己的Ajax函数:

<!-- 1. 导入自定义的ajax函数库 -->
<script src="./itheima.js"></script>
<script>
// 2. 调用自定义的 itheima 函数,发起 Ajax 数据请求
itheima({
method: '请求类型',
url: '请求地址',
data: { /* 请求参数对象 */ },
success: function(res) { // 成功的回调函数
console.log(res) // 打印数据
}
})
</script>

2. 定义options参数选项

itheima() 函数是我们自定义的 Ajax 函数,它接收一个配置对象作为参数,配置对象中可以配置如下属性:

  • method 请求的类型

  • url 请求的 URL 地址

  • data 请求携带的数据

  • success 请求成功之后的回调函数

3. 处理data参数

在封装Ajax函数时,希望用户通过对象形式提交参数,因为对象形式对用户而言使用方便,但是在底层使用XHR对象发请求时,所有的参数都是通过查询字符提交给服务器的,所以,需要把 data 对象,转化成查询字符串的格式,从而提交给服务器,因此提前定义 resolveData 函数如下:

itheima.js:

// resolveData 函数:处理 data 参数,将用户提交过来的data参数转换成查询字符串形式返回出去
function resolveData(data) {var arr = []for (var k in data) {var str = k + '=' + data[k]arr.push(str)}return arr.join('&')
}var res = resolveData({ name: 'zs', age: 20 })
console.log(res)

测试.html:

  <script src="./js/itheima.js"></script>

效果图:

4. 定义itheima函数

在 itheima() 函数中,需要创建 xhr 对象,并监听 onreadystatechange 事件:

itheima.js:

function itheima(options) {var xhr = new XMLHttpRequest()// 把外界传递过来的参数对象,转换为 查询字符串var qs = resolveData(options.data)xhr.onreadystatechange = function () {if (xhr.readyState === 4 && xhr.status === 200) {var result = JSON.parse(xhr.responseText)  // 把json字符串转成JS对象options.success(result)   // 成功回调}}
}

5. 判断请求的类型

不同的请求类型,对应 xhr 对象的不同操作,因此需要对请求类型进行 if … else … 的判断:

itheima.js:

function resolveData(data) {var arr = []for (var k in data) {var str = k + '=' + data[k]arr.push(str)}return arr.join('&')
}function itheima(options) {var xhr = new XMLHttpRequest()var qs = resolveData(options.data)// 3.判断请求的类型if (options.method.toUpperCase() === 'GET') {     // toUpperCase转换成大写// 发起GET请求xhr.open(options.method, options.url + '?' + qs)xhr.send()} else if (options.method.toUpperCase() === 'POST') {// 发起POST请求xhr.open(options.method, options.url)xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')xhr.send(qs)}xhr.onreadystatechange = function () {if (xhr.readyState === 4 && xhr.status === 200) {var result = JSON.parse(xhr.responseText) // 把json字符串转成JS对象options.success(result)   }}
}

测试.html:

  <script src="./js/itheima.js"></script><script>// 测试GET请求:itheima({method: 'GET',url: 'http://www.liulongbin.top:3006/api/getbooks',data: {id: 1},success: function (res) {console.log(res)}})// 测试POST请求:// itheima({//   method: 'post',//   url: 'http://www.liulongbin.top:3006/api/addbook',//   data: {//     bookname: '水浒传',//     author: '施耐庵',//     publisher: '北京图书出版社'//   },//   success: function (res) {//     console.log(res)//   }// })</script>

效果图:

【Ajax】了解Ajax与jQuery中的Ajax相关推荐

  1. jquery中ajax的分页,利用jQuery中的ajax分页实现代码

    本文实例讲解了用jQuery中的ajax分页相关代码,分享给大家供大家参考,具体内容如下 把分页封装到一个jsp里,那么大家就可以通过include的方式引入分页的页面这里起名为page_ajax.j ...

  2. [Ajax] jQuery中的Ajax -- 01-jQuery中的Ajax

    jQuery中的Ajax 参考文档 jQuery中的Ajax 六个Ajax操作方法 load()方法 $.get()方法 $.post()方法 $.ajax()方法 $.getScript()方法 $ ...

  3. 什么是Ajax ? 为什么要学习Ajax jQuery中的Ajax怎么使用 10

    什么是Ajax Ajax 的全称是 Asynchronous JavaScript And XML (异步 JavaScript 和 xml ) 通俗理解:在网页中利用 XMLHttpRequest ...

  4. 关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题...

    前段时间做一个项目,而项目中所有的请求都要用jquery 中的ajax请求或者post请求,但是开始处理一些简单操作还好,但是自己写了一些验证就出现问题了,比如表单提交的时候,要验证帐号的唯一性,所以 ...

  5. jQuery中终止Ajax请求

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Java程序员从笨鸟到菜鸟之(八十九)跟我学jquery(五)jquery中的ajax详解

    Ajax让用户页面丰富起来, 增强了用户体验. 使用Ajax是所有Web开发的必修课. 虽然Ajax技术并不复杂, 但是实现方式还是会因为每个开发人员的而有所差异.jQuery提供了一系列Ajax函数 ...

  7. Jquery中使用ajax请求SSM后台时提示:org.springframework.http.converter.HttpMessageNotReadableException: Could no

    场景 Jquery中使用ajax向SSM后台请求数据时提示: org.springframework.http.converter.HttpMessageNotReadableException: C ...

  8. jQuery系列(十四):jQuery中的ajax

    1.什么是ajax AJAX = 异步的javascript和XML(Asynchronous Javascript and XML) 简言之,在不重载整个网页的情况下,AJAX通过后台加载数据,并在 ...

  9. 用JQuery中的Ajax方法获取web service等后台程序中的方法

    用JQuery中的Ajax方法获取web service等后台程序中的方法 1.准备需要被前台html页面调用的web Service,这里我们就用ws来代替了,代码如下: using System; ...

  10. 六、jQuery 中的 AJAX 跨域问题

    第 2 章:jQuery 中的 AJAX 官方中文文档:https://jquery.cuishifeng.cn/jQuery.Ajax.html 2.1 get 请求 $.get(url, [dat ...

最新文章

  1. 使用PowerShell调用MTools分析MongoDB性能并发送邮件
  2. 找回丢失的mysql root 用户密码
  3. Web负载均衡学习笔记之K8S内Ngnix微服务服务超时问题
  4. mysql按照datetime精确查询_MySQL datetime字段查询按小时:分钟排序
  5. Debian 3.1 (Sarge) 正式发布,Knoppix也升级到最后一个单CD版3.9
  6. 用位运算实现四则运算之加减乘除(用位运算求一个数的1/3)
  7. sqlserver-事务处理
  8. c语言修改elf文件crc32,ELF文件中调试信息的格式说明?
  9. antlr4 代码 语法树_使用ANTLR4,用于代码镜像和基于Web的DSL的Primefaces扩展
  10. 35解释器模式(Interpreter Pattern)
  11. AlphaGo围棋 论文笔记
  12. Android车牌识别sdk开发包,基于Android和iOS平台的车牌识别SDK开发包
  13. win7资源监视器介绍
  14. NXP MIMXRT1052CVL5B + 正点原子 + MCUXpresso IDE 开发环境搭建
  15. 什么是大数据,大数据工具有那些,大数据流程是什么样的 一
  16. win10远程桌面连接服务器接示内部错误
  17. canvas-随机粒子特效
  18. unity当前项目里面AssetBundle和加载的方法总结
  19. Pycharm导入scap包提示出错
  20. 使用webgl绘制一个点

热门文章

  1. 一个极佳的编程语言练习项目
  2. 《从菜鸟到大师-杨老师课程笔记》Python工程师之 01
  3. 处理tophonetics的音标
  4. 中国独角兽企业前景预测及投资规划建议报告2022-2028年版
  5. 最新计算机学术研讨会,TC预告|CCF 2020第十届全国文字与计算学术研讨会
  6. 利用蜜罐捕捉攻击实验(31)
  7. 永恒之境服务器维护,7月22日服务器例行维护公告(已完成)
  8. unity3d培训_002
  9. 如何用 MacBook 提高工作效率 【配置篇】
  10. Android 同一个广播接收到两次