原生js之Ajax
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的更多相关文章
- 原生js实现Ajax
一般来说,大家可能都会习惯用JQuery提供的Ajax方法,但是用原生的js怎么去实现Ajax方法呢? JQuery提供的Ajax方法: $.ajax({ url: , type: '', dataT ...
- 使用原生js写ajax
// 使用原生js 封装ajax // 兼容xhr对象 function createXHR(){ if(typeof XMLHttpRequest != "undefined") ...
- 表单验证--通过原生js模仿ajax的异步交互
今天给大家带来个福利,我也是刚刚学习的很实用的一个东西,通过原生js模仿ajax的异步交互. 我的博客只是给那些新手看的大神勿喷,写的不好可留言,请指出. 因为当初自己学的时候一个问题不会找人问,知道 ...
- 原生JS实现Ajax及Ajax的跨域请求
前 言 如今,从事前端方面的程序猿们,如果,不懂一些前后台的数据交互方面的知识的话,估计都不太好意思说自己是程序猿.当然,如今有着许多的框架,都有相对应的前后台数据交互的方法. ...
- 原生JS的Ajax技术
1.同步和异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待 卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡 ...
- 原生js中用Ajax进行get传参
原生js中用Ajax进行get传参 案例: <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...
- 原生js实现ajax与jquery的ajax库,及json
这是一篇笔记博客, Ajax: 和服务器进行数据交换(异步) 用js实现复杂的原理:用于发送请求的对象在不同的浏览器中是不同的 同源策略:ajax发送请求的url地址与服务器地址必须是同一域名,协议, ...
- 用原生js实现ajax、jsonp
转载: http://www.cnblogs.com/yangheng/p/6065910.html 一.原生js实现ajax $.ajax({ url: '', type: 'post', data ...
- 原生JS实现ajax 发送post请求
1. [代码]原生JS实现ajax 发送post请求 <script> var oStr = ''; var postData = {}; var oAjax = null; //post ...
- 原生js写Ajax
//原生js写ajax就像打电话 //打电话分下面4步//1.拿出手机//2.拨号//3.说话//4.挺对方说话 //ajax也分下面4步//1.创建ajax对象//2.连接到服务器//3.发送请求( ...
随机推荐
- 从flink-example分析flink组件(3)WordCount 流式实战及源码分析
前面介绍了批量处理的WorkCount是如何执行的 <从flink-example分析flink组件(1)WordCount batch实战及源码分析> <从flink-exampl ...
- web设计_6_图片/标题/说明文字布局
这个web中常见的单元布局,最好的布局方式就是利用float布局. 其中有个很关键的问题是需要清浮动.子集浮动是无法撑开父级的高度. 目前较完善的清浮动解决方案:在浮动的父级上添加.clear,达到清 ...
- java数组扩容
有些时候使用数组代替栈,玩意数组容量不够需要扩容 则: 1.Array.toString();直接遍历打印数组 2.数组扩容采用Array.copyOf(),直接实现数组扩容功能,非常强大 (实际 ...
- Linux学习笔记06之DNS
一.DNS概念:Domain Name System(域名系统) 是互联网上作为域名和IP地址相互映射的一个分布式数据库 二.DNS功能: 完成IP地址和域名之间的一个映射 三.DNS分类: 1.静态 ...
- 跟着阿里p7一起学java高并发 - 第19天:JUC中的Executor框架详解1,全面掌握java并发核心技术
这是java高并发系列第19篇文章. 本文主要内容 介绍Executor框架相关内容 介绍Executor 介绍ExecutorService 介绍线程池ThreadPoolExecutor及案例 介 ...
- Shiro权限框架与SpringMVC集成
1.Shiro整合SpringMVC 我们学习Shiro框架肯定是要应用到Web项目上的,所以我们需要整合Shiro和SpringMVC 整合步骤: 第一步:SpringMVC框架的配置 spring ...
- 异步编程CompletableFuture实现高并发系统优化之请求合并
先说场景: 根据Redis官网介绍,单机版Redis的读写性能是12万/秒,批量处理可以达到70万/秒.不管是缓存或者是数据库,都有批量处理的功能.当我们的系统达到瓶颈的时候,我们考虑充分的压榨缓存和 ...
- 浅谈 ASCII、Unicode、UTF-8,一目了然
对于ASCII.Unicode.UTF-8这三种编码方式我们经常用到,也经常挂到嘴边,但他们是怎么来的,为什么要存在,具体是怎么个规则,我们并没有做深入了解,下面,就带你看一下他们到底是怎么回事吧…… ...
- 自练Eclipse搭建SSH全自动注解博客项目笔记
1.创建一个动态的java项目 2.导入搭建所需要的jar包 3.配置web.xml文件 1).头文件 2).struts2的拦截器 3).定位加载Spring容器的配置文件 4).监听 5). 6) ...
- AppBoxFuture: 123挨个站-数据按序存储
最近几天在优化存储的编码规则,顺带把之前设计了但未实现的倒排序一并实现了.由于所有数据(元数据.实体.索引等)都映射至RocksDB的Key-Value存储,所以必须扩展RocksDB的自定义比较 ...