什么是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));//服务器响应的结果
}
}

原生js ajax请求的更多相关文章

  1. 原生JS Ajax 请求

    var username = document.getElementById('username').value; var password = document.getElementById('pa ...

  2. 原生js ajax与jquery ajax的区别

    原生js ajax的调用: ajax({ type : "get", url : "02_ajax_get.txt", data : { "userN ...

  3. js ajax请求传token

    js  ajax请求传token 方法一: headers: { Authorization: "BasicAuth " + token } 方法二: beforeSend: fu ...

  4. 原生 JS Ajax,GET和POST 请求实例代码

    javascript/js的ajax的GET请求代码如下所示: <script type="text/javascript"> /* 创建 XMLHttpRequest ...

  5. 使用XMLHttpRequest对象完成原生的AJAX请求

    1.大家眼中的Ajax 说到Ajax,只要有过前端开发经验的童鞋一定都不陌生,大都知道它就是一种与后端之间的通信技术,通过这个神奇的家伙,我们不用像传统表单那样填完信息一点提交就呼啦呼啦跳转了.Aja ...

  6. 当跨域时,js ajax 请求出现options请求

    上面有文章说过http的options. 查了很久.试了很多版本的jQuery,下面这段代码在同事的机子上测试是没有问题的.正常 的请求, 一在我机子上面就会出现option,网上说先向服务器预检等. ...

  7. 原生的ajax请求

    原生ajax请求的步骤: get 请求: 1,创建一个xhr变量 var xhr=new XMhttpRequest(); 2,设置请求方式和请求地址 xhr.open('url','http//19 ...

  8. [JS] Ajax请求会话过期处理

    对于页面来说,处理session过期比较简单,一般只需在过滤器里面判断session用户是否存在,不存在则跳转页面到登陆页即可. 对于Ajax请求来说,这个办法则无效,只能获取到登录页的html代码. ...

  9. 新浪博客:html+css+原生JS+Ajax初级+mySql数据库——源码

    **************************************************************************************************** ...

随机推荐

  1. 笔记本电脑连接wifi,同时提供热点wifi给手机使用

    笔记本电脑连接wifi,同时提供热点wifi给手机使用 用电脑建立WiFi供手机平板设备使用ps:电脑需要有无线网卡,一般笔记本都自带 此教程仅适用Windows 7 & 8,1.打开笔记本的 ...

  2. 配置wildfly10为linux的服务,并开机启动

    1.在opt路径下 下载 wildfly ,并解压下载下的压缩包 cd /opt sudo wget -c http://download.jboss.org/wildfly/10.0.0.Final ...

  3. js基础知识1:标识符 注释

    何为标识符:意思是标记识别的的符号,简称标识符,主要的用途声明变量,函数的名字,属性以及函数中的参数. 标识符的规则1:首先第一个字符必须是字母(abcABC),_(下划线),$(美元符号).不能是( ...

  4. winform中TextBox只能输入字母

    private void txtTestPerson_KeyPress(object sender, KeyPressEventArgs e) { if ((e.KeyChar >= 'a' & ...

  5. vb越界

    想起来一个项目当中,遇到了一个问题,就是老是显示数据溢出. 后来查查查,发现是由于vb的特性造成的.例如cbyte()函数.此函数()里面的数据运算也不能超过cbyte的范围,不然就回发生溢出问题.

  6. git忽视修改的文件

    对于tracked文件来说,使用.gitignore是不行的.但是git提供了新的方法. 使用命令 git update-index --assume-unchanged <files>, ...

  7. web实验博客3.css-position

    css-position属性为块级元素的定位提供了可能,今天我将讲述我所了解的position属性. div.h.p元素都可以称为块级元素,display属性可以改变其框类型,其值可以对框进行设置,默 ...

  8. 管道/FIFO

    管道: #include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<string.h&g ...

  9. CLion之C++框架篇-优化开源框架,引入curl,实现get方式获取资源(四)

      背景   结合上一篇CLion之C++框架篇-优化框架,引入boost(三),继续进行框架优化!在项目中,我们经常会通过get方式拉取第三方资源,这一版优化引入类库curl,用来拉取第三方资源库. ...

  10. 背水一战 Windows 10 (99) - 关联启动: 关联指定的文件类型, 关联指定的协议

    [源码下载] 背水一战 Windows 10 (99) - 关联启动: 关联指定的文件类型, 关联指定的协议 作者:webabcd 介绍背水一战 Windows 10 之 关联启动 关联指定的文件类型 ...