Ajax基础
1 概要
异步JavaScript和XML(Asynchronous Javascript And XML,Ajax)就是使用js来收发来自web服务器的数据,且无需重载整个页面的技术。
注 :xml是浏览器和服务器彼此通信的格式。
2 XMLHttpRequest 对象
XMLHttpRequest 是浏览器的内置对象
2.1 基础
2.1.1 创建 XMLHttpRequest 对象
//可用于连接、请求和接受服务器中的数据
var request = new XMLHttpRequest();
2.1.2 XMLHttpRequest 对象主要方法
初始化XMLHttpRequest 对象
request.open("GET",url,async);
//参数一:表示请求类型的字符串,"GET"/"POST"
//参数二:请求目标的url
//参数三:表示是否以异步模式发出,true为异步(默认值,常用),false为同步
发送请求
request.send(null);
//send()方法必须接受一个参数,表示要发送的数据,也可以是null
用于设置请求头
setRequestHeader(header,value)
# header:请求头的key
# value:请求头的value
获取所有响应头
getAllResponseHeaders()
#返回值:所有响应头数据
获取响应头指定的header的值
getResponseHeader(header)
#header:响应头的key(字符串类型)
#返回值:响应头中指定的header对应的值
终止请求
abort()
2.1.3 XMLHttpRequest 对象主要属性
Number : readyState 每个值表示生存期中的特定状态。eg:0,1,2,3,4
Function : onreadystatechange 当readyState的值改变时自动触发执行其对应的函数(回调函数)
String : responseText 服务器返回的数据(字符串类型)
XmlDocument : responseXML 服务器返回的数据(xml对象)
Number : status 状态吗 eg:200,400
String : statusText 状态文本(字符串) eg:OK,NotFound
2.1.4 get/post请求简单实现
<script>
function SubmitForm() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "/login", true);
xhr.onreadystatechange = func;
xhr.send()
function func() {
if (xhr.readyState == 4) {
console.log(xhr.responseText);
}
}
}
</script>
<script>
function SubmitForm() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "/login", true);
xhr.onreadystatechange = func;
//在使用post提交数据时要设置请求头
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset-UTF-8');
xhr.send()
function func() {
if (xhr.readyState == 4) {
console.log(xhr.responseText);
}
}
}
</script>
2.2 同步请求
以同步模式发出的请求会暂停所有js代码的执行,直到从服务器获得响应为止。其应用代码比较简洁:
var request =new XMLHttpRequest();
request.open("GET","",false);
request.send(null);
var status =request.status;
//XMLHttpRequest的status属性,包含与服务器响应一起发送的http状态码
if(status ==200){
alert("The text file was found");
}else {
alert("code:"+status);
}
2.3 异步请求
大多数情况下都使用异步请求,它允许 XMLHttpRequest 对象等待服务器的响应的同时,浏览器继续执行js代码。
在异步请求中, XMLHttpRequest 对象提供了 readyState 属性,该属性包含一个数值,每个数值都表示请求生存期中的特定状态:
| 数值 | 注释 |
|---|---|
| 0 | 已创建对象,但未调用open()方法 |
| 1 | 已调用open()方法,但未发送请求 |
| 2 | 已发送请求,标题和状态已接收并可用 |
| 3 | 接收到来自服务器的响应 |
| 4 | 接收完请求数据 |
当 readyState 发生变化的时候,都会触发onreadystatechange事件
var request =new XMLHttpRequest();
function reqReadyStateChange() {
if(request.readyState == 4){ //浏览器知道服务器已经收到自己的请求
var status =request.status;
if(status == 200){
alert(request.responseText); //返回文本的数据
}else {1720
alert("code:"+status);
}
}
request.open("GET",url);
request.onreadystatechange = reqReadyStateChange;
request.send(null);
}
3 自定义HttpRequest模块
创建HttpRequest模块
//定义一个 HttpRequest 引用类型(类)
function HttpRequest(url, callback) {
this.request = new XMLHttpRequest();
this.request.open("GET", url);
var tempRequest = this.request;
//this指向的是XMLHttpRequest对象,而不是reqReadyStateChange函数
function reqReadyStateChange() {
//在函数中又定义了一个函数
if (tempRequest.readyState == 4) {
if (tempRequest.status == 200) {
callback(tempRequest.responseText);
} else {
alert("An error occurred trying to contact the server.");
}
}
}
this.request.onreadystatechange = reqReadyStateChange;
}
HttpRequest.prototype.send = function () { //重构一个不需要参数的send()方法
this.request.send(null);
};
使用以上自定义的模块
//创建一个函数用于显示接收到的数据
function handleData(text){
alert(text);
}
var request = new HttpRequest("http://localhost:63342/123.txt",handleData);
request.send();
Ajax基础的更多相关文章
- 史上最全的Ajax基础详解
同步请求和异步请求 先解释一下同步和异步的概念: 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯 ...
- 【Java EE 学习 31】【JavaScript基础增强】【Ajax基础】【Json基础】
一.JavaScript基础增强 1.弹窗 (1)使用window对象的showModelDialog方法和showModelessDialog方法分别可以弹出模式窗口和非模式窗口,但是只能在IE中使 ...
- Ajax基础知识《一》
对于网站开发人员,一定不会陌生的Ajax技术,本篇就让我们认识一下它,或许在日后的开发过程中我们就可以使用到.Ajax在那方面使用的比较多呢?答案:表单注册,传统的表单注册,有时需要填写大量的信息,当 ...
- Ajax基础2
什么是服务器 网页浏览过程的分析 如何配置自己的服务器程序(AMP) 什么是Ajax 无刷新数据读取 异步,同步 Ajax基础(2) 使用Ajax 基础请求显示txt的文件 字符集编码 缓存,阻止缓存 ...
- ajax基础语法、ajax做登录、ajax做用户名验证是否可用、ajax做关键字查询动态显示、ajax做用表格显示数据并增加操作列
AJAX: AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. ...
- Ajax基础--JavaScript实现
ajax原理 1.ajax 即“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),也就是无刷新数据读取. 通俗地讲就是:AJAX 通过在后台与 ...
- jQuery基础---Ajax基础教程(二)
jQuery基础---Ajax进阶 内容提纲: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 发文不易,转载请注明出处! 在 Ajax 基础一篇中, ...
- jQuery基础---Ajax基础教程
jQuery基础---Ajax基础 内容提纲: 1.Ajax 概述 2.load()方法 3.$.get()和$.post() 4.$.getScript()和$.getJSON() 5.$.ajax ...
- Ajax基础知识(二)
接上一篇 Ajax基础知识(一) 在上一篇博客里,抛弃了VS中新建aspx页面,拖个button写上C#代码的方式.使用ajax的方式,异步向服务器请求数据.我们让服务器只简单的返回一个" ...
- 原生AJAX基础讲解及兼容处理
原文:原生AJAX基础讲解及兼容处理 AJAX = Asynchronous JavaScript and XML (异步的JavaScript和XML). AJAX不是新技术 ,但却是热门的技术.它 ...
随机推荐
- 应用Apache Axis进行Web Service开发
转自(http://tscjsj.blog.51cto.com/412451/84813) 一.概述 SOAP原意为Simple Object Access Protocol(简单对象访问协议),是一 ...
- Android 通过httppost上传文本文件到服务器。
/** * 往服务器上上传文本 比如log日志 * @param urlstr 请求的url * @param uploadFile log日志的路径 * /mnt/shell/emulated/0/ ...
- ipad和iphone的适配
关于xib或者storybord下iphone的横竖屏的适配以及ipad的适配 ios8出现了Size Classes,解决了各种屏幕适配的问题,他把屏幕的宽和高分别分成了三种,把屏幕总共分成了九种情 ...
- 记录下UIButton的图文妙用和子控件的优先显示
UIButton的用处特别多,这里只记录下把按钮应用在图文显示的场景,和需要把图片作为按钮的背景图片显示场景: 另外记录下在父控件的子控件优先显示方法(控件置于最前面和置于最后面). 先上效果图: 1 ...
- JavaScript 事件
事件 概念:事件是可以被 JavaScript 侦测到的行为. JavaScript 使我们有能力创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触 ...
- Scala基础语法 (一)
如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法. Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的. 我 ...
- Juniper SSG5 PPTP VPN 619错误解决
公司分部的客户端需要使用PPTP VPN连接总部,将网关更换为Juniper SSG5后,客户端出现了每几个小时自动断开的现象,错误619. 解决:Security —— ALG —— 开启PPTP协 ...
- 图像处理中任意核卷积(matlab中conv2函数)的快速实现。
卷积其实是图像处理中最基本的操作,我们常见的一些算法比如:均值模糊.高斯模糊.锐化.Sobel.拉普拉斯.prewitt边缘检测等等一些和领域相关的算法,都可以通过卷积算法实现.只不过由于这些算法的卷 ...
- 并行计算提升32K*32K点(32位浮点数) FFT计算速度(4核八线程E3处理器)
对32K*32K的随机数矩阵进行FFT变换,数的格式是32位浮点数.将产生的数据存放在堆上,对每一行数据进行N=32K的FFT,记录32K次fft的时间. 比较串行for循环和并行for循环的运行时间 ...
- CORS详解
介绍 由于同源策略的缘故,以往我们跨域请求,会使用诸如JSON-P(不安全)或者代理(设置代理和维护繁琐)的方式.而跨源资源共享(Cross-Origin Resource Sharing)是一个W3 ...