看了两天关于Ajax的使用,总感觉云里雾里的。

故在此总结梳理一下,如果疏漏错误还请纠正支出。

Ajax能够在向服务器请求额外的数据时,不必重新加载/卸载整个页面,实现一小块区域性的刷新,也是常说的异步更新。

它的核心是XMLHttpRequest对象(简称XMR对象)。

从对服务器的请求到接受返回来的数据,可以从上图简单先了解一下。

第一步,先新建一个XHR对象

//这里新建一个XHR对象

var xhr;

//如果你想兼容IE5的浏览器,那你必须先判断
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest(); //比较常用的
} else {
xhr = new ActiveXObject("Microsoft.XMLHTTP"); //兼容IE的写法
}

第二步,调用XHR对象的方法open()来初始化

open(); 有三个参数

第一个是method,请求的方式: "POST,GET..." 这两个比较常用

第二个是请求的URL,可以是绝对路径或者相对路径,当要遵循同域原则

第三个是true和false,true表示异步请求,false是同步请求。默认是true;

xhr.open("GET","example.php",true);
//这里只是初始化请求条件!并未发送请求
//这里发送了一次请求。
//send();可以发送数据,但如果不,建议传入null,以便一些浏览器报错;
xhr.send(null);

第三步,发送完请求然后呢?判断请求失败了还是成功了。

xhr有这样一个属性;

xhr.status;

存储着响应的HTTP状态

如果它的值是200,表示请求成功。

如果它的值为304 表示请求的资源并没有被修改,可以直接使用浏览器中缓存的版本;

xhr.status; 

//因为有的浏览器会错误报告204状态代码
if (xhr.status >= 200 && xhr.status <= 300 || xhr.status == 304) {
  console.log("请求成功");
  alert(xhr.responseText); // 弹出请求到的数据
} else {
  alert(xhr.status); //请求失败,弹出失败的状态
}

到此为止,以上是可以成功发送同步请求的。

但问题来了,我们是发送异步请求,让JS代码继续执行不必等待响应。

还有一个属性

XHR对象的readyState;五个值

0:未初始化,未调用open();

1:启动,但并未发送请求;

2:发送,已经发送请求;

3:接受,已经接受到部分响应数据;

4:完成所有数据的接受,并可以在客户端使用了。

只要readyState属性的值变成另外一个值,就会触发readystatechange事件。

我们来利用这个事件做操作

xhr.onreadystatechange = function() {
  if (xhr.readyState == 4) { //说明可以使用了
    if (xhr.status >= 200 && xhr.status <= 300 || xhr.status == 304) {
      alert(xhr.responseText);
    } else {
      alert("请求失败了呢");  
    }
  }
}

完整代码

var xhr;
//因为有的浏览器会错误报告204状态代码
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest(); //比较常用的
} else {
xhr = new ActiveXObject("Microsoft.XMLHTTP"); //兼容IE的写法
}
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4) { //说明可以使用了
    if (xhr.status >= 200 && xhr.status <= 300 || xhr.status == 304) {
      alert(xhr.responseText);
    } else {
      alert("请求失败了呢");  
    }
  }
}
xhr.open("GET","example.php",true);
xhr.send(null);

 

在做Ajax的实验时,找到一个老哥分享的接口,可以拿来练练手;

在此,也感谢这位老哥分享的文章!

免费开放接口API-https://blog.csdn.net/c__chao/article/details/78573737

原生Ajax的使用——含开放API接口的更多相关文章

  1. Django使用AJAX调用自己写的API接口

    Django使用AJAX调用自己写的API接口 *** 具体代码和数据已上传到github https://github.com/PythonerKK/eleme-api-by-django-rest ...

  2. 开放API接口

    [开放API]——知乎.博客园等开放API接口(更新ing)   Cnodejs.org: https://cnodejs.org/api/ 和风天气: http://docs.heweather.c ...

  3. 开放API接口安全处理!

    目录 概念 加密 MD5 Token 开放api参数 重复提交,恶意调用 日志 验证码 开放API接口安全处理! 参考文献: 公钥,私钥和数字签名这样最好理解 (转载) 概念 存在问题: 数据窃取 数 ...

  4. 开放API接口安全处理

    一.开放API接口定义 顾名思义,开放出来给其他人调用的API接口就是开放API接口.例如,短信接口.邮件接口. 二.开放API的弱点 数据窃取 用户的密码等信息被不轨之人窃取,登录账号发布敏感信息, ...

  5. 开放api接口签名验证

    不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...

  6. 【转】开放api接口签名验证

    不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...

  7. 新浪网易淘宝等IP地区信息查询开放API接口调用方法

    通过IP地址获取对应的地区信息通常有两种方法:1)自己写程序,解析IP对应的地区信息,需要数据库.2)根据第三方提供的API查询获取地区信息. 第一种方法,参见文本<通过纯真IP数据库获取IP地 ...

  8. 准备开发开放API接口

    准备开发APP开放接口,允许JQUERY直接调用http://blog.csdn.net/wuxiangege/article/details/52238968 SIGN的设计与实现http://bl ...

  9. 远程开户系统开放API接口

    如今随着智能识别技术的成熟和商用,金融领域也开始逐渐试水"远程开户".从OCR身份证识别到人脸识别,到如今市场上即将出现完整的远程开户系统,除了需要成熟的技术做支撑外,还需要对市场 ...

随机推荐

  1. 设置默认訪问项目的client的浏览器版本号(IE版本号)

    在项目开发部署中.发现浏览器不兼容现象,在不处理兼容性情况下让用户更好体验(IE浏览器) 我们来设置client默认訪问项目的浏览器版本号 例如以下所看到的的是不同IE版本号下的效果截图比較: IE5 ...

  2. iOS常用的正则表达式总结

    /* 正则表达式说明: . 匹配除换行符以外的任意字符 \\w 匹配字母或数字或下划线或汉字 \\s 匹配任意的空白符 \\d 匹配数字 \\b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字 ...

  3. mac 显示隐藏文件的命令行和快捷键

    命令行方式: 显示隐藏文件: defaults write com.apple.Finder AppleShowAllFiles YES;KillAll Finder 不显示隐藏文件: default ...

  4. Android开源框架ViewPageIndicator和ViewPager实现Tab导航

    前言: 关于使用ViewPageIndicator和ViewPager实现Tab导航,在开发社区里已经有一堆的博客对其进行了介绍,假设我还在这里写怎样去实现.那简直就是老生常谈,毫无新奇感,并且.我也 ...

  5. 安卓dex 文件结构简要说明

    #ifndef _DEX_FILE_HELPER_ #define _DEX_FILE_HELPER_ //此文件仅仅是起帮助作用,帮助不太了解DexFile结构的了解一下DexFile相关结构,想更 ...

  6. PCB genesis孔符制作实现方法

    一.先看genesis原始孔符 孔符的作用:用于表示孔径的大小的一种代号, 当孔径检测时,可以按分孔图中的孔符对应的孔径尺寸对孔径检测. 在实际PCB行业通常不使用原始(图形)孔符,而使用字母孔符(如 ...

  7. PCB WebAPI跨域访问 实现方式

    我们写WebAPI不仅自己系统调用,也需要给其它系统调用,那么如何实现跨域访问了,在这里介绍2种方法实现 方法一.修改Web.Config文件   实现 此方法是全局实现跨域,如果仅想某个方法实现跨域 ...

  8. codevs3342绿色通道(单调队列优化dp)

    3342 绿色通道  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold   题目描述 Description <思远高考绿色通道>(Green Pass ...

  9. 乐字节-Java8核心特性实战之函数式接口

    什么时候可以使用Lambda?通常Lambda表达式是用在函数式接口上使用的.从Java8开始引入了函数式接口,其说明比较简单:函数式接口(Functional Interface)就是一个有且仅有一 ...

  10. JavaScript--改变 HTML 样式

    HTML DOM 允许 JavaScript 改变 HTML 元素的样式.如何改变 HTML 元素的样式呢? 语法: Object.style.property=new style; 注意:Objec ...