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>

原生js之Ajax的更多相关文章

  1. 原生js实现Ajax

    一般来说,大家可能都会习惯用JQuery提供的Ajax方法,但是用原生的js怎么去实现Ajax方法呢? JQuery提供的Ajax方法: $.ajax({ url: , type: '', dataT ...

  2. 使用原生js写ajax

    // 使用原生js 封装ajax // 兼容xhr对象 function createXHR(){ if(typeof XMLHttpRequest != "undefined") ...

  3. 表单验证--通过原生js模仿ajax的异步交互

    今天给大家带来个福利,我也是刚刚学习的很实用的一个东西,通过原生js模仿ajax的异步交互. 我的博客只是给那些新手看的大神勿喷,写的不好可留言,请指出. 因为当初自己学的时候一个问题不会找人问,知道 ...

  4. 原生JS实现Ajax及Ajax的跨域请求

      前  言          如今,从事前端方面的程序猿们,如果,不懂一些前后台的数据交互方面的知识的话,估计都不太好意思说自己是程序猿.当然,如今有着许多的框架,都有相对应的前后台数据交互的方法. ...

  5. 原生JS的Ajax技术

    1.同步和异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待  卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡 ...

  6. 原生js中用Ajax进行get传参

    原生js中用Ajax进行get传参 案例: <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...

  7. 原生js实现ajax与jquery的ajax库,及json

    这是一篇笔记博客, Ajax: 和服务器进行数据交换(异步) 用js实现复杂的原理:用于发送请求的对象在不同的浏览器中是不同的 同源策略:ajax发送请求的url地址与服务器地址必须是同一域名,协议, ...

  8. 用原生js实现ajax、jsonp

    转载: http://www.cnblogs.com/yangheng/p/6065910.html 一.原生js实现ajax $.ajax({ url: '', type: 'post', data ...

  9. 原生JS实现ajax 发送post请求

    1. [代码]原生JS实现ajax 发送post请求 <script> var oStr = ''; var postData = {}; var oAjax = null; //post ...

  10. 原生js写Ajax

    //原生js写ajax就像打电话 //打电话分下面4步//1.拿出手机//2.拨号//3.说话//4.挺对方说话 //ajax也分下面4步//1.创建ajax对象//2.连接到服务器//3.发送请求( ...

随机推荐

  1. net core 序列化与反序列化与遇到的几个坑

    之前在C#里面序列化直接引入命名空间后使用JavaScriptSerializer jss = new JavaScriptSerializer();就可以用, 而net core里面不这样用了,我们 ...

  2. JUint4的下载、配置及对一个算法编写单元测试用例(测试多组数据每组多个参数)

    一.JUnit4 jar包下载 链接:https://pan.baidu.com/s/1AdeVGGikcY5dfL151ZnWHA 提取码:h1am 下载完成后,解压一下即可. 二.导入JUnit4 ...

  3. 色彩缤纷的python(改变字体颜色及样式不完全版)

    色彩缤纷的python(改变字体颜色及样式) *补上昨天随笔中提到的改变字体颜色样式的方法,昨日随笔https://www.cnblogs.com/Du704/p/11265958.html 在项目过 ...

  4. windows下用easybcd引导ubuntu出现grub的解决方案

    linux安装时吧boot挂在到单独的分区 如果grub覆盖了mbr的话可以用pe工具箱修复windows的mbr linux引导项选grub 驱动器选安装时挂载了/boot的分区 添加条目 启动即可 ...

  5. Android 属性动画实战

    什么是属性动画? 属性动画可以通过直接更改 View 的属性来实现 View 动画.例如: 通过不断的更改 View 的坐标来实现让 View 移动的效果: 通过不断的更改 View 的背景来实现让 ...

  6. kylin Retrieving hive dependency...

    由于公司环境配置hive默认连接hiveserver2 ,不管hive cli 还是beeline cli都默认使用beeline cli,连接hive需要输入账号密码; 启动kylin 时会Retr ...

  7. 在一个含有1-n的序列中,每次找到第Ki小的数,并把它删除(线段树)

    提交链接 Data structure is one of the basic skills for Computer Science students, which is a particular ...

  8. 5、数组的复制(test2.java、test3.java)

    对于数组的复制,在最开始的时候最容易犯的一个错误,那就是自己认为的申请一个数组,然后将已存在的数组赋值到新申请数组名上,这样是错误的,这样仅仅是将数组的地址复制了过去,并不是,将数组内的元素拷贝过去, ...

  9. Json串与实体的相互转换 (不依赖于jar包 只需Eclipse环境即可)

    Json串与实体的相互转换 (不依赖于jar包 只需Eclipse环境即可) 最近学习了javaWeb开发,用的是ssh框架里面自己整合了hibernate 和Struts2 和spring框架,其中 ...

  10. JVM 内存模型概述

    我们都知道,Java程序在执行前首先会被编译成字节码文件,然后再由Java虚拟机执行这些字节码文件从而使得Java程序得以执行.事实上,在程序执行过程中,内存的使用和管理一直是值得关注的问题.Java ...