Ajax的简述

什么是 AJAX ?

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML )。是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,AJAX 可以实现网页的异步更新,意味着可以在不重新加载整个页面的情况下,对网页的某部分进行更新。
  AJAX 技术核心是 XMLHttpRequest 对象( 简称 XHR ),这是由微软首先引入的一个特性。 XHR 为服务器发送请求和解析服务器响应提供了流畅的接口,能够以异步方式从服务器取得更多的信息,意味着用户单击后,可以不必刷新页面也能取得新数据。
  
  首先创建 XHR 对象:

  var xhr = new XMLHttpRequest();

接下来,向服务器发送数据:
  通过使用 open ( method , url , async ) 和 send ( string )
  在使用 XHR 对象时,要调用的第一个方法是open()
  open 方法传入的3参数如下:

  • method:请求的类型(GET/POST)。
  • url:文件在服务器的位置
  • async:布尔值,true表示异步,false表示同步(可选,默认为true)。

send() 方法将请求发送到服务器,有一个可选的参数 string ,仅用于 POST 类型的请求。在发送 GET 请求时,可能得到缓存的信息 ( IE中 ),导致发送的异步请求不能正确地返回想要的最新地数据。可以在 url 中添加一个唯一的 ID :( 随机数 )。

xhr.open("GET","demo .asp?t=" + Math.random(),true);
xhr.send();

最后一步,是服务器响应。
  XMLHttpRequest 对象的 responseText 和responseXML 属性分别获得字符串形式的响应数据和XML形式的响应数据。可以在控制台里输出响应如下:

  console.log(xhr.responseText);

注意:无论内容类型是什么,响应主体的内容都会保存到responseText 属性中。

还有3个关于响应状态的属性也经常用到。
  如果需要接收的是异步响应,这就需要检测XHR对象的 readyState 属性,该属性表示请求/响应过程的当前活动阶段。

Ajax 状态码

在创建 ajax 对象,配置 ajax 对象,发送请求,以及接受完服务器端相应数据,这个过程中的每一个步骤都会对应一个数值,这个数值就是 ajax 状态码

  • readyState :存有 XMLHttpRequest 的状态。XHR 对象会经历5种不同的状态。
  • 0:请求未初始化( new 完后,还没有调用 open());
  • 1:服务器连接已建立( 对象已创建并初始化,尚未调用 send() 方法);
  • 2:请求已经发送;
  • 3:请求处理中,通常响应中已经有部分数据可以用了:
  • 4:请求已完成,已经接收到全部响应数据,而且已经可以在客户端使用了。
xhr.readyState  //获取 Ajax 状态码

注意:我们一般只关心状态4,因为这时所有数据都已经就绪。只要 readyState 属性值由一个值变成另一个值,都会触发一次 readystatechange 事件

  • state:声明要在窗口状态中显示一条信息。
    200:请求成功
    404:未找到页面。
获取服务器端的相应
onreadystatechange 事件

onreadystatechange:存储函数( 或函数名 ),每当 readyState 属性改变时,就会调用该函数

两种获取服务器端相应方式的区别


onload请求数少,代码简洁,效率高。

Ajax 运行原理实现

请求参数传递
  • GET 请求方式
xhr.open('get','www.baidu.com?name=wow&age=20');
  • POST 请求方式
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send('name=zhangsan&age=20');
请求参数的格式
  1. application/x-www-form-urlencoded
name-wow&age=20&sex=
  1. application/json
{name:'zhangsan',age:'20',sex:'男'}

在请求头中指定 Content-Type 属性的值是 application/json,告诉服务器端当前请求参数的格式是 json

JSON.stringify()//将 json 对象转换为 json 字符串

注意:get请求是不能提交 json 对象的数据格式的,传统网站的表单提交也是不支持json 对象数据格式的

Ajax 错误处理

1.网络畅通,服务器端能接受到请求,服务器端返回的结果不是与其结果

可以判断服务器端返回的状态码,分别进行处理。xhr.status 获取 http 状态码。

2.网络畅通,服务器端没有接受到请求,返回 404 状态码。

检查请求地址是否错误。

3.网络畅通,服务器端能接收到请求,服务器端返回 500 状态码。

服务器端错误,检查后端代码。

4.网络中断,请求无法发送到服务器端。

会触发 xhr 对象下面的 onerror 事件,在 onerror 事件处理函数中对错误进行处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值