Appearance

Ajax

Pcjmy2022-02-17JavaScriptJavaScript

Ajax

原生Ajax

1.Ajax 是什么 Ajax 是 Asynchronous JavaScript and XML(异步 JavaScript 和 XML)的简写 Ajax 中的异步:可以异步地向服务器发送请求,在等待响应的过程中,不会阻塞当前页面,浏览器可以做自己的事情。直到成功获取响应后,浏览器才开始处理响应数据 XML(可扩展标记语言)是前后端数据通信时传输数据的一种格式 XML 现在已经不怎么用了,现在比较常用的是 JSON Ajax 其实就是浏览器与服务器之间的一种异步通信方式 使用 Ajax 可以在不重新加载整个页面的情况下,对页面的某部分进行更新 2.搭建 Ajax 开发环境 Ajax 需要服务器环境,非服务器环境下,很多浏览器无法正常使用 Ajax

Ajax的基本用法

  • XMLHttpRequest
  • Ajax的使用步骤
  • 使用Ajax完成前后端通信

Ajax 想要实现浏览器与服务器之间的异步通信,需要依靠 XMLHttpRequest,它是一个构造函数。

不论是 XMLHttpRequest,还是 Ajax,都没有和具体的某种数据格式绑定。

Ajax的使用步骤

1.创建 xhr 对象 const xhr = new XMLHttpRequest();

2.监听事件,处理响应 当获取到响应后,会触发 xhr 对象的 readystatechange 事件,可以在该事件中对响应进行处理

readystatechange 事件监听 readyState 这个状态的变化 它的值从 0 ~ 4,一共 5 个状态 0:未初始化。尚未调用 open() 1:启动。已经调用 open(),但尚未调用 send() 2:发送。已经调用 send(),但尚未接收到响应 3:接收。已经接收到部分响应数据 4:完成。已经接收到全部响应数据,而且已经可以在浏览器中使用了

3.准备发送请求 xhr.open( 'HTTP 方法 GET、POST、PUT、DELETE', '地址 URL ./index.html ./index.xml ./index.txt', true ); 调用 open 并不会真正发送请求,而只是做好发送请求前的准备工作 3.发送请求 调用 send() 正式发送请求 send() 的参数是通过请求体携带的数据 xhr.send(null);

JSON

1.JSON 是什么

Ajax发送和接收数据的一种格式

JSON 全称是 JavaScript Object Notation

2.为什么需要 JSON

JSON 有 3 种形式,每种形式的写法都和 JS 中的数据类型很像,可以很轻松的和 JS 中的数据类型互相转换

JS->JSON->PHP/Java

PHP/Java->JSON->JS

JSON的3种形式

1.简单值形式

JSON 的简单值形式就对应着 JS 中的基础数据类型 数字、字符串、布尔值、null 注意事项:

  • JSON 中没有 undefined 值
  • JSON 中的字符串必须使用双引号
  • JSON 中是不能注释的

2.对象形式

JSON 的对象形式就对应着 JS 中的对象

注意事项:

  • JSON 中对象的属性名必须用双引号,属性值如果是字符串也必须用双引号
  • JSON 中只要涉及到字符串,就必须使用双引号
  • 不支持 undefined

3.数组形式

JSON 的数组形式就对应着 JS 中的数组

注意事项:

  • 数组中的字符串必须用双引号
  • JSON 中只要涉及到字符串,就必须使用双引号
  • 不支持 undefined

JSON的常用方法

1.JSON.parse() JSON.parse() 可以将 JSON 格式的字符串解析成 JS 中的对应值 一定要是合法的 JSON 字符串,否则会报错

2.JSON.stringify() JSON.stringify() 可以将 JS 的基本数据类型、对象或者数组转换成 JSON 格式的字符串

跨域

1.跨域是什么

向一个域发送请求,如果要请求的域和当前域是不同域,就叫跨域 不同域之间的请求,就是跨域请求

2.什么是不同域,什么是同域

协议、域名、端口号,任何一个不一样,就是不同域 与路径无关,路径一不一样无所谓

3.跨域请求为什么会被阻止

阻止跨域请求,其实是浏览器本身的一种安全策略--同源策略 其他客户端或者服务器都不存在跨域被阻止的问题

4.跨域解决方案

  • CORS跨域资源共享
  • JSONP

优先使用 CORS 跨域资源共享,如果浏览器不支持 CORS 的话,再使用 JSONP

CORS

Access-Control-Allow-Origin: * 表明允许所有的域名来跨域请求它,* 是通配符,没有任何限制 只允许指定域名的跨域请求 Access-Control-Allow-Origin: http://127.0.0.1:5500

使用 CORS 跨域的过程:

  • 浏览器发送请求
  • 后端在响应头中添加 Access-Control-Allow-Origin 头信息
  • 浏览器接收到响应
  • 如果是同域下的请求,浏览器不会额外做什么,这次前后端通信就圆满完成了
  • 如果是跨域请求,浏览器会从响应头中查找是否允许跨域访问
  • 如果允许跨域,通信圆满完成
  • 如果没找到或不包含想要跨域的域名,就丢弃响应结果

3.CORS 的兼容性

IE10 及以上版本的浏览器可以正常使用 CORS

JSONP

1.JSONP 的原理 script 标签跨域不会被浏览器阻止 JSONP 主要就是利用 script 标签,加载跨域文件

2.使用 JSONP 实现跨域 服务器端准备好 JSONP 接口

XHR对象

XHR的属性

1.responseType 和 response 属性

responseText 只能在没有设置 responseType 或者 responseType = '' 或 'text' 的时候才能使用

2.timeout 属性

设置请求的超时时间(单位 ms)

3.withCredentials 属性

指定使用 Ajax 发送请求时是否携带 Cookie 使用 Ajax 发送请求,默认情况下,同域时,会携带 Cookie;跨域时,不会 最终能否成功跨域携带 Cookie,还要看服务器同不同意

XHR方法

1.abort() 终止当前请求 一般配合 abort 事件一起使用 2.setRequestHeader() 可以设置请求头信息 xhr.setRequestHeader(头部字段的名称, 头部字段的值); 请求头中的 Content-Type 字段用来告诉服务器,浏览器发送的数据是什么格式的

XHR的事件

1.load 事件 响应数据可用时触发 2.error 事件 请求发生错误时触发 3.abort 事件 调用 abort() 终止请求时触发 4.timeout 事件 请求超时后触发

Last Updated 2022-12-11 17:07:38