Ajax的简单基础
什么是 AJAX ?
AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX
可以使网页实现异步更新。
这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
同步请求:返回的是整张页面,会刷新整个页面,他是串行的过程,只能同时做一件事。
异步请求:返回的是字符串(页面的部分信息),不会刷新整个页面,不会阻塞当前主线程。
AJAX通过核心对象XMLHttpRequest在后台发起子线程,该子线程负责此次的请求,会请求服务器,服务器会返回一个字符串,该字符串会封装在XMLHttpRequest里的responseText属性中,然后请求返回客户端,可通过xhr.responseText获取服务器返回的字符串,然后通过DOM技术修改DOM树。由于是子线程在发起请求,所以不会阻塞当前显示页面的主线程,即异步请求。由于返回的是字符串且是通过DOM技术在修改DOM树,所以不会刷新整张页面,即局部刷新,这就是我们所说的AJAX异步请求,局部刷新。
应用场景:需要请求服务器,但只需要更新局部页面信息时。
AJAX的开发流程
1、创建核心对象xhr(不同浏览器创建此对象的方式不同)
var xhr;
if (window.XMLHttpRequest) {
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xhr=new XMLHttpRequest();
} else {
// IE6, IE5 浏览器执行代码
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
2、初始化xh---->目的:告知xhr以什么方式发送,发送到什么位置且携带什么参数。
get方式:xhr.open(“get”,url?传递参数);
post方式:xhr.open(“post”,url);,
若需要传递参数则需指定参数格式
xhr.setRequestHeader(“Content-type”,”application/x-www-form-urlencoded”);
3、发送异步请求
get方式:xhr.send();
post方式:若无参数xhr.send();
若需要传递参数,则xhr.send(“需要传递给服务器的参数”);
注:从请求发出到请求返回,xhr.readyState的属性(标识xhr的请求状态)会经历以下几个阶段的变化:
=0,表示初始化但并没有发送异步请求
=1,表示已发送异步请求
=2,表示已发送完毕
=3,表示开始返回
=4,表示返回完毕
4、设置监听,通过xhr.onreadystatechange属性
注:xhr.status为协议码,表示请求的状态(例:404,500),当其为200时,表示请求成功
xhr.onreadystatechange = function(){
if(xhr.readyState==4 && xhr.status==200){//返回完整,请求成功
var res = xhr.responseText;//获取返回值
//拿到返回值后可对dom操作,局部刷新页面
}
}
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body οnlοad="load()">
</body>
<script type="text/javascript">
function load(){
//1.创建核心对象xhr
var xhr;
if (window.XMLHttpRequest) {
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xhr=new XMLHttpRequest();
} else {
// IE6, IE5 浏览器执行代码
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
//2.初始化xhr
xhr.open("GET","index.html");
//3.发送异步请求
xhr.send();
//4.设置监听
xhr.onreadystatechange = function(){
if(xhr.readyState==4 && xhr.status==200){//返回完整,请求成功
var res = xhr.responseText;//获取返回值
//拿到返回值后可对dom操作,局部刷新页面
alert(res);
}
}
}
</script>
</html>
还有JQuery对Ajax的 封装:
演示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<table id="testTable">
<tr>
<td>中国</td>
<td>秦国</td>
</tr>
</table>
<input type="button" value="异步刷新用户列表" οnclick="testAjax()"/>
</body>
<script src="jquery.1.9.2.min.js" type="text/javascript">
</script>
<script type="text/javascript">
function testAjax(){
$.ajax({
type:"get", //发送请求的方式,默认请求方式为get
url:"/Jquery/jason.txt", //发送到什么位置
success:function(res){//会在返回完整,请求成功时调用,其中的参数是返回值
for(var i=0;i<res.length;i++){
$("#testTable").append("<tr><td>"+res[i].id+"</td><td>"+res[i].name+"</td></tr>");
}
},
dataType:"json"
});
}
</script>
</html>
Ajax的简单基础的更多相关文章
- ASP.NET MVC Ajax.ActionLink 简单用法
ASP.NET MVC 项目中,如何使用类似于 iframe 的效果呢?或者说 Ajax 局部刷新,比如下面操作: 我们想要的效果是,点击 About 链接,页面不刷新(地址栏不变),然后下面的内容进 ...
- ajax从零基础到实战
一. 什么是AJAX? ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 二. 在项目中怎么运用AJAX? 项目主要文件夹目录有img文件夹,css文件夹,js文件夹,如果你要运 ...
- html --- ajax --- javascript --- 简单的封装
Ajax的简单封装 Ajax的全称是AsynchronousJavaScriptAndXML 如有疑问请参考:http://zh.wikipedia.org/zh-cn/AJAX 以及传智播客的视频教 ...
- MVC3.0+knockout.js+Ajax 实现简单的增删改查
MVC3.0+knockout.js+Ajax 实现简单的增删改查 自从到北京入职以来就再也没有接触MVC,很多都已经淡忘了,最近一直在看knockout.js 和webAPI,本来打算采用MVC+k ...
- php+jquery+ajax+json简单小例子
直接贴代码: <html> <title>php+jquery+ajax+json简单小例子</title> <?php header("Conte ...
- AJAX的一些基础和AJAX的状态
大佬们,我又回来了,最近好几天都没写博客了,别问我干啥去了,我只是去围观奶茶妹变成抹茶妹而已 前几天我们一起封装了一个AJAX,那今天我们来说说AJAX的一些基础和AJAX的状态码 首先,啥是AJAX ...
- 第107天:Ajax 实现简单的登录效果
使用 Ajax 实现简单的登录效果 Ajax是一项使局部网页请求服务器信息,而不需整体刷新网页内容的异步更新技术.这使得向服务器请求的数据量大大减少,而且不会因局部的请求失败而影响到整体网页的加载. ...
- 2.1实现简单基础的vector
2.1实现简单基础的vector 1.设计API 我们参考下C++ <std> 库中的vector, vector中的api很多,所以我们把里面用的频率很高的函数实现; 1.1 new&a ...
- java:Spring框架1(基本配置,简单基础代码模拟实现,spring注入(DI))
1.基本配置: 步骤一:新建项目并添加spring依赖的jar文件和commons-logging.xx.jar: 步骤二:编写实体类,DAO及其实现类,Service及其实现类; 步骤三:在src下 ...
随机推荐
- oracle增加用户密码,cmd导入数据库
1.tomcat中sql语句 用户名 pdmis 密码pdmis create USER pdmis IDENTIFIED BY pdmis;grant create session to pdmis ...
- python-包管理工具-pip
目录 Python pip pip相关命令 解决pip相关问题 Python pip回到顶部 Python最让人的喜欢的就是它有丰富的类库和各种第三方的包,而对于这些包的下载.删除等管理操作,就要用到 ...
- Django框架基础-MTV模型
一个小问题: 什么是根目录:就是没有路径,只有域名..url(r'^$') 补充一张关于wsgiref模块的图片 一.MTV模型 Django的MTV分别代表: Model(模型):和数据库相关的,负 ...
- Luogu P2079 烛光晚餐(背包)
P2079 烛光晚餐 题意 题目背景 小明准备请小红去一家咖啡厅,共进烛光晚餐.小红高兴地和他一起去了咖啡厅. 题目描述 小红说:"小明,你点菜吧."小明看到菜单上有\(N\)道菜 ...
- JAVA数据结构之数组
接下来的几篇博文会在最近仔细研读数据结构与算法的书籍后会摘录一些要点和总结一些自己的心得体会,帮助大家更深入地理解java中的数据结构和一些基本的算法,同时巩固自己数据结构和算法这些最基础的计算机知识 ...
- cdq分治(偏序)
偏序问题: https://www.luogu.org/blog/Owencodeisking/post-xue-xi-bi-ji-cdq-fen-zhi-hu-zheng-ti-er-fen 优质题 ...
- Ubuntu GitHub操作——分支、合并与标签
分支 分支是用来将特性开发绝缘开来的.在你创建仓库的时候,master 是"默认的"分支.在其他分支上进行开发,完成后再将它们合并到主分支上. 创建一个叫做"featur ...
- Joomla - 后台系统(功能简介)
Joomla - 后台系统简介 全局配置
- tip:删除数组中的undefined
this.checkedImg = this.checkedImg.filter(Boolean)
- EF Code First数据库连接配置
前面几节,使用的都是通过EF Code First创建的新数据库,接下来,将开始使用已存在的数据库. 1.使用配置文件设置数据库连接 App.config 数据库连接字符串的name与Data中Nor ...