详解 Ajax
1.1 简介
1.1.1 概述
Ajax:标准读音 [ˈeɪˌdʒæks] ,中文音译:阿贾克斯。这个术语源自描述从基于 Web 的应用到基于数据的应用。Ajax 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。使用 JavaScript 向服务器提出请求并处理响应而不阻塞用户核心对象 XMLHttpRequest。通过这个对象,JavaScript 可在不重载页面的情况与 Web 服务器交换数据,即在不需要刷新页面的情况下,就可以产生局部刷新的效果。Ajax 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。
1.1.2 Ajax 的优缺点
使用 Ajax 的最大优点,就是能在不更新整个页面的前提下维护数据。这使得 Web 应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变的信息。Ajax 不需要任何浏览器插件,但需要用户允许 JavaScript 在浏览器上执行。Ajax 应用程序必须在众多不同的浏览器和平台上经过严格的测试。随着 Ajax 的成熟,一些简化 Ajax 使用方法的程序库也相继问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持 JavaScript 的用户提供替代功能。 对应用 Ajax 最主要的缺点就是,它可能破坏浏览器的后退与加入收藏书签功能。在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的可能差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在 Ajax 应用程序中,却无法这样做。 进行 Ajax 开发时,网络延迟(即用户发出请求到服务器发出响应之间的间隔)需要慎重考虑。如果不给予用户明确的回应,没有恰当的预读数据,或者对 XMLHttpRequest 的不恰当处理,都会使用户感到厌烦。通常的解决方案是,使用一个可视化的组件来告诉用户系统正在进行后台操作并且正在读取数据和内容。
1.2 XMLHttpRequest
1.3 jQuery 封装的 Ajax
jQuery 提供了 4 种 ajax 方法:.get()、 .post()、 .ajax()、 .getJSON()。.ajax 这个是 JQuery 对 ajax 封装的最基础步,通过这个函数可以完成异步通讯的所有功能。.post 这个函数其实就是对 .ajax 进行了更进一步的封装,简化了数据提交方式,只能采用 POST 方式提交。.get 和
1.3.1 语法
$.ajax({name:value, name:value, ... })
$.get({name:value, name:value, ... })
$.post({name:value, name:value, ... })
1.3.2 参数
参数 |
描述 |
---|---|
async |
布尔值,表示请求是否异步处理。默认是 true |
beforeSend(xhr) |
发送请求前运行的函数 |
cache |
布尔值,表示浏览器是否缓存被请求页面。默认是 true。 |
complete(xhr,status) |
请求完成时运行的函数(在请求成功或失败之后均调用,即在 success 和 error 函数之后) |
contentType |
发送数据到服务器时所使用的内容类型。默认是:“application/x-www-form-urlencoded” |
context |
为所有 AJAX 相关的回调函数规定 “this” 值 |
data |
规定要发送到服务器的数据 |
dataFilter(data,type) |
用于处理 XMLHttpRequest 原始响应数据的函数 |
dataType |
预期的服务器响应的数据类型 |
error(xhr,status,error) |
如果请求失败要运行的函数 |
global |
布尔值,规定是否为请求触发全局 AJAX 事件处理程序。默认是 true |
ifModified |
布尔值,规定是否仅在最后一次请求以来响应发生改变时才请求成功。默认是 false |
jsonp |
在一个 jsonp 中重写回调函数的字符串 |
jsonpCallback |
在一个 jsonp 中规定回调函数的名称 |
password |
规定在 HTTP 访问认证请求中使用的密码 |
processData |
布尔值,规定通过请求发送的数据是否转换为查询字符串。默认是 true |
scriptCharset |
规定请求的字符集 |
success(result,status,xhr) |
当请求成功时运行的函数 |
timeout |
设置本地的请求超时时间(以毫秒计) |
traditional |
布尔值,规定是否使用参数序列化的传统样式 |
type |
规定请求的类型(GET 或 POST) |
url |
规定发送请求的 URL。默认是当前页面 |
username |
规定在 HTTP 访问认证请求中使用的用户名 |
xhr |
用于创建 XMLHttpRequest 对象的函数 |
1.3.3 示例
$.ajax({
url:'test.do',
data:{username:"Demo_Null", password:"niubiplus"},
type:'post',
dataType:'json',
beforeSend:function(xhr){
// 请求前的处理
},
success:function(result, status, xhr){
// 请求成功时处理
},
complete:function(xhr, status){
// 请求完成的处理
},
error:function(xhr, status, error){
// 请求出错处理
}
})
- JQuery JCshare 0.1 分享插件
- Java中的即时编译(Just-in-time compilation)
- 无尽的忙碌换来幸福的日子
- 消费者驱动的微服务契约测试套件:Spring Cloud Contract
- 自己做的一个小程序 可采集、导出、模板、配置
- 分布式消息队列 RocketMQ 源码分析 —— Message 拉取与消费(上)
- .NET反射、委托技术与设计模式
- 我最常用的Intellij IDEA快捷键
- 用Js控制TextBox不能复制粘贴
- 漫画:什么是单例模式?(整合版)
- 保护连接字符串
- IntelliJ IDEA 复杂的重构技巧(二)
- Spring Boot中使用Flyway来管理数据库版本
- 缓存穿透、缓存并发、热点缓存之最佳招式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux 实现双网卡绑定单个IP——bond篇
- Hacking with iOS: SwiftUI Edition - 愿望清单项目(一)
- 重拾Java Web应用的基础体系结构
- 使用SAP C4C自定义BO实现自定义的Number Range
- 限流算法简介及Guava RateLimiter令牌桶限流介绍
- K8S的名称空间创建&&版本的升级、回滚操作
- SAP Cloud for Customer CLR(Code List Restriction)的一种高级用法
- SAP WebClient UI One Hit Navigation的实现方法
- 【打包构建】Mac下使用expect实现执行sudo命令时自动输入密码
- ASP.NET Core 奇淫技巧之SPA部署
- SAP Cloud for Customer Rule Editor的使用方法和底层工作原理
- (数据科学学习手札94)QGIS+Conda+jupyter玩转Python GIS
- 72-STM32+ESP8266+AIR202基本控制篇-移植使用-移植Android的MQTT包到自己的工程项目
- 用上Latex实现编辑伪代码
- TensorFlow交叉熵函数(cross_entropy)·理解