博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原生ajax 请求
阅读量:5957 次
发布时间:2019-06-19

本文共 2116 字,大约阅读时间需要 7 分钟。

什么是ajax

AJAX 是一种用于创建快速动态网页的技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。

这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新,也就是我们所说的局部更新。

 

简单示例

function play(){            var ajax = new XMLHttpRequest();            ajax.open("get","https://api.apiopen.top/recommendPoetry");            ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");            ajax.send();            ajax.onreadystatechange=function(){                if(ajax.readyState == 4 && ajax.status == 200){                    console.log(JSON.parse(ajax.responseText));                }            }        }play();

 

 

XMLHttpRequest 对象

如果需要使用ajax 我们需要创建一个XMLHttpRequest对象。代码如下:

var ajax = new XMLHttpRequest();
 
 
open()方法

它接收3个参数:

  1.method:请求类型,如get、post。

  2.url:请求地址。

  3.async:规定当前请求是否异步,默认(不填)是异步的。(true为异步,false为同步)

 
ajax.open("get","https://api.apiopen.top/recommendPoetry");
 
 
setRequestHeader方法

接下来我们通过setRequestHeader方法设置请求头。注意:这个方法必须要在open()方法执行之后才能设置。(也就是必须先调用open()方法)。代码如下:

ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");

 

send方法

send方法表示将请求发送到服务器。

当请求类型为post时,send()方法接受一个参数,就是你需要传给后台的参数。get请求可以不填或者填null

ajax.send();

 

这时请求已经发送出去了,那我们如何知道服务器是否接收到了请求?如何接收服务器给我们的响应呢?

 

readyState属性

readyState是XMLHttpRequest对象中的一个属性,它存有服务器响应给我们的状态信息。readyState属性一共有5个值:

  • 0: 请求未初始化(代理被创建,但尚未调用 open() 方法)
  • 1: 服务器连接已建立(open方法已经被调用)
  • 2: 请求已接收(send方法已经被调用,并且头部和状态已经可获得)
  • 3: 请求处理中(下载中,responseText 属性已经包含部分数据)
  • 4: 请求已完成,且响应已就绪(下载操作已完成)

 

onreadystatechange方法

每当readyState属性改变时,就会触发onreadystatechange()方法,所以我们可以在这个方法里面去获取服务器给我们的响应。

当readyState的值等于4的时候,表示请求已经完成,并且服务器已经把结果返回给我们了。

ajax.onreadystatechange=function(){   //readyState等于4  并且status等于200(表示请求成功)  if(ajax.readyState==4 && ajax.status==200){      console.log(ajax.responseText);//服务器响应的结果  }  }

 

responseText和responseXML属性

responseText:获得字符串形式的响应数据。

responseXML:获得XML形式的响应数据。

我们上面使用的是responseText属性,但一般需要的是json格式数据,我们可以使用JSON.parse()让字符串转换成json对象。代码如下:

ajax.onreadystatechange=function(){   //readyState等于4  并且status等于200(表示请求成功)  if(ajax.readyState==4 && ajax.status==200){      console.log(JSON.parse(ajax.responseText));//服务器响应的结果  }  }

转载于:https://www.cnblogs.com/huancheng/p/10318203.html

你可能感兴趣的文章
MySQL锁之一:锁详解
查看>>
选择29部分有用jQuery应用程序插件(免费点数下载)
查看>>
下拉状态条
查看>>
C#实现的等额本息法、按月付息到期还本法、一次性还本付息法
查看>>
北京Uber优步司机奖励政策(10月12日~10月18日)
查看>>
RTImageAssets 自动生成 AppIcon 和 @2x @1x 比例图片
查看>>
Codeforces Round #277.5 (Div. 2)B——BerSU Ball
查看>>
【转】Linux删除文件未释放空间问题处理
查看>>
数据库设计三大范式
查看>>
BZOJ2388 : 旅行规划
查看>>
这个帖子要收藏,以后用得着--python 实时获取子进程输出
查看>>
多重对数函数
查看>>
第1讲 Redis部署与基本操作
查看>>
msyql在查询字段中的所有记录,不重复
查看>>
Java 开源博客 —— Solo 0.6.9 发布时间!
查看>>
JS类的封装及实现代码
查看>>
HDOJ 3480 Division
查看>>
BeanFactory、ApplicationContext、ApplicationContextAware区别
查看>>
关于WEB Service&WCF&WebApi实现身份验证之WCF篇(2)
查看>>
HDU2586 How far away ?(LCA模板题)
查看>>