原生Ajax的使用——含开放API接口
看了两天关于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接口的更多相关文章
- Django使用AJAX调用自己写的API接口
Django使用AJAX调用自己写的API接口 *** 具体代码和数据已上传到github https://github.com/PythonerKK/eleme-api-by-django-rest ...
- 开放API接口
[开放API]——知乎.博客园等开放API接口(更新ing) Cnodejs.org: https://cnodejs.org/api/ 和风天气: http://docs.heweather.c ...
- 开放API接口安全处理!
目录 概念 加密 MD5 Token 开放api参数 重复提交,恶意调用 日志 验证码 开放API接口安全处理! 参考文献: 公钥,私钥和数字签名这样最好理解 (转载) 概念 存在问题: 数据窃取 数 ...
- 开放API接口安全处理
一.开放API接口定义 顾名思义,开放出来给其他人调用的API接口就是开放API接口.例如,短信接口.邮件接口. 二.开放API的弱点 数据窃取 用户的密码等信息被不轨之人窃取,登录账号发布敏感信息, ...
- 开放api接口签名验证
不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...
- 【转】开放api接口签名验证
不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...
- 新浪网易淘宝等IP地区信息查询开放API接口调用方法
通过IP地址获取对应的地区信息通常有两种方法:1)自己写程序,解析IP对应的地区信息,需要数据库.2)根据第三方提供的API查询获取地区信息. 第一种方法,参见文本<通过纯真IP数据库获取IP地 ...
- 准备开发开放API接口
准备开发APP开放接口,允许JQUERY直接调用http://blog.csdn.net/wuxiangege/article/details/52238968 SIGN的设计与实现http://bl ...
- 远程开户系统开放API接口
如今随着智能识别技术的成熟和商用,金融领域也开始逐渐试水"远程开户".从OCR身份证识别到人脸识别,到如今市场上即将出现完整的远程开户系统,除了需要成熟的技术做支撑外,还需要对市场 ...
随机推荐
- SVN Working copying 'xxxxx/xxxx/xxxx' locked
使用SVN想更新上传时提示Working copying 'xxxx/xxxx/xxx' locked 解决方法: 选中你的项目,上面工具栏一行找到 Action → Cleanup all Wor ...
- 【转】linux 远程桌面工具NX
1.在linux服务器上需要安装3个文件,下载地址为: http://www.nomachine.com/download-package.php?Prod_Id=1977 nxclient-3.4. ...
- Python学习笔记9:标准库之日期时间(time包,datetime包)
一 time包 sleep([float time]) 延迟一段以浮点数表示的秒数 time包基于C语言的库函数(library functions). Python的解释器一般是用C编写的,Pyth ...
- ios15--综合小例子
// // XMGViewController.m,控制器类 #import "XMGViewController.h" #import "XMGShop.h" ...
- [模板] BSGS
BSGS是一种解决一类专门的问题的解法,主要是解决已知A, B, C,求X使得A^x = B (mod p)这一类问题. 解法很简单,先设x = i*m-j(m=ceil(sqrt(p))),然后进行 ...
- codeforces educational round 25
A 出题人不给样例解释...具体程序 #include<bits/stdc++.h> using namespace std; int n; ]; int main() { scanf() ...
- openstack instance resize Resize error: Unable to resize disk down
- Linux学习大纲
- yii2表单,用惯yii1的可以看一下,有很大不同哦
使用表单 本章节将介绍如何创建一个从用户那搜集数据的表单页.该页将显示一个包含 name 输入框和 email 输入框的表单.当搜集完这两部分信息后,页面将会显示用户输入的信息. 为了实现这个目标,除 ...
- 返回Json和XML两种格式
由于项目需要,同一接口支持根据参数不同返回XML和Json两种格式的数据,在网上看了很多大多是加后缀的方式来实现返回不同格式数据的,后来看了一篇http://www.importnew.com/276 ...