1、什么是Ajax?

全称:Asynchronous JavaScript and XML  (异步的 JavaScript和 xml),是前后端数据交互的一种技术(前端通过 Ajax 发送http请求->后台接受前端数据并处理->处理完毕返回响应数据)。原理简单但功能强大。

核心优点:在不刷新整个页面的情况下实现局部数据刷新。大大节省了资源的消耗。

应用范围:现阶段的前后端数据交互大多使用 Ajax 技术。

2、怎么发送一个 Ajax请求 。有以下几个关键点:

①创建 XMLHttpRequest 对象

这个对象 是 实现 Ajax的基础 用于和服务器进行数据交互

var xh = new XMLHttpRequest();

②调用 XMLHttpRequest 的 open() 和 send() 方法

xh.open(method,url,true|false);

三个参数 分别是:method,请求的方法,了解 post 和 get 基本就够了(一般就用这两种方法)。url:请求的服务器API接口。最后一个是否异步,默认是异步。

xh.send(string);

参数 :当open中的 method 是post 时, string代表的是要向后台传送的数据。当 method 是 get 时 string为空代表get请求不通过send方法传送数据。

扩展:post和get传参数的区别:get通过地址栏向后台传数据 例如:http://www.baidu.com?name=zjl&age=18 ,“?”后面的就是传送的数据。post传送的数据就是通过上面讲到的send()向后台发送数据.

③前面两点讲了如何发送一个请求 那么如何接受后台返回的数据?。

xh.onreadystatechange() 通过该事件监听当前请求的状态并接受后台传送的数据,readyState 改变时就会触发该事件

readyState取值:

  • 0: 请求未初始化
  • 1:服务器连接已建立
  • 2:请求已接收
  • 3:请求处理中
  • 4:请求已完成,且响应已就绪

常见响应状态码(status):200:请求响应成功  404:找不到路径 检查请求路径是否正确

了解readyState 和 status 之后 即可判断何时接收后台传回的数据

④通过 xh.responseText 属性获得响应的字符串。如果服务器响应的是 xml ,则通过 xh.responseXML 属性进行接收。

3.通过以上的了解,直接看个Ajax完整实例。注意:通过控制台查看打印结果

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax</title>
<script>
// js 的原生 Ajax
// 获取所有的数据
function getAll(){
// 创建 XMLHttpRequest 实例
var http = new XMLHttpRequest();
// 发送请求的方式 和 URL 地址
http.open('GET','http://www.wangshuwen.com/api/getRegion');//访问一个免费接口,如果失效可替换
http.onreadystatechange = function(){
if (http.status === 200 && http.readyState === 4) {
console.log(http.responseText);
var res = http.responseText;// 响应体数据
console.log(JSON.parse(res));// 将 json 数据转化为js数据
}
}
// 发送请求
http.send();
}
getAll();
</script>
</head>
<body> </body>
</html>

最新文章

  1. ImportError: No module named &#39;requests&#39;
  2. java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called.
  3. Effective Python2 读书笔记2
  4. class-dump + DumpFrameworks.pl
  5. jQuery 常用的代码片段
  6. [SAP ABAP开发技术总结]业务对象和BAPI
  7. IOSTimer的例子留个备注
  8. Asp.Net中的session配置
  9. org.apache.subversion.javahl.ClientException: svn: E155021: This client is too old to work with the
  10. String,StringBuffer,StringBuilder的区别
  11. json的面向对象
  12. 人脸姿态校正算法 附完整C++示例代码
  13. 记MySQL的一次查询经历
  14. 实训任务03: 使用Eclipse创建MapReduce工程
  15. windows10 下使用Pycharm2016 基于Anaconda3 Python3.6 安装Mysql驱动总结
  16. 026_lsof命令经验总结
  17. Sublime text3 插件LiveReload 实现实时预览
  18. SQLServer 中的存储过程中判断临时表是否存在,存在则删除临时表
  19. c#数据库设计--1、概述
  20. Java时间日期字符串格式转换大全

热门文章

  1. laravel 5.6初学笔记
  2. iView学习笔记(一):Table基本操作(包含前后端示例代码)
  3. web-inf与meta-inf
  4. JS制作简易的考试答题管理系统
  5. 【iOS】使用 CocoaPods 导入文件没有提示
  6. codeforces 213div(2) 365 A.Good Number 365 B.The Fibonacci Segment
  7. Java代码计算运行时间
  8. Linux vim基本的使用方法
  9. 通俗易懂--循环神经网络(RNN)的网络结构!(TensorFlow实现)
  10. 并发模型与IO模型梳理