原生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.发送请求( ...
随机推荐
- python课堂整理21---初识装饰器
一.装饰器: 本质就是函数,功能:为其他函数添加附加功能 原则: 1.不能修改被装饰函数的源代码 2.不能修改被修饰函数的调用方式 一个简单的装饰器 import time def timmer(fu ...
- json与js对象间的转化
- [原创]一款基于Reactor线程模型的java网络爬虫框架
AJSprider 概述 AJSprider是笔者基于Reactor线程模式+Jsoup+HttpClient封装的一款轻量级java多线程网络爬虫框架,简单上手,小白也能玩爬虫, 使用本框架,只需要 ...
- solr 新建core
D:\tomcat\webapps\solr\solr_home 在该路径下创建一个新的core,所需文件和层级如下 test_core |-- conf |-- schema.xml |-- sol ...
- 8、大型项目的接口自动化实践记录----DB分别获取预期结果、实际结果
上一篇实现数据分离升级版--从DB获取数据,以及对应的请求实现,作为一个case,还缺少了预期结果与实际结果的获取及对比.因为前面的文章已经说过接口返回值的获取及对比,所以这篇不说这块了,这篇说一下D ...
- Hadoop单机、伪分布式、分布式集群搭建
JDK安装 设置hostname [root@bigdata111 ~]# vi /etc/hostname 设置机器hosts [root@bigdata111 ~]# vi /etc/hosts ...
- 消息中间件-activemq实战之消息持久化(六)
对于activemq消息的持久化我们在第二节的时候就简单介绍过,今天我们详细的来分析一下activemq的持久化过程以及持久化插件.在生产环境中为确保消息的可靠性,我们肯定的面临持久化消息的问题,今天 ...
- n的阶乘 -牛客
题目描述 输入一个整数n,输出n的阶乘(每组测试用例可能包含多组数据,请注意处理) 输入描述: 一个整数n(1<=n<=20) 输出描述: n的阶乘 解题思路 采用递归求解,也可以使用循环 ...
- 搞定java String校招面试题
今天大致的阅读了String类的源码,并刷了常见的面试题,在此做个笔记. 面试题一:判断下列程序运行结果 package String_test; public class test_1 { publ ...
- Compatibility模式安装windows7后改为AHCI模式无法启动Windows7的解决办法
在用Compatibility模式安装Windows 7后,再在BIOS中去开启SATA硬盘的AHCI功能的话,就会出现无法启动的情况.只有改回Compatibility模式后,系统才恢复正常.经过试 ...