AJAX核心--XMLHttpRequest五步法
引言:
AJAX=异步Javascript + XML,AJAX是一种用于创建高速动态网页的技术。
开门见山:
解读:AJAX使用XHTML和CSS为网页表示。DOM动态显示和交互,XML进行数据交换和处理,XMLHttpRequest进行数据检索。Javascript将以上技术融合。
AJAX与传统的Web开发有什么差别?
用一句话总结:在页面跳转时,传统是整个页面刷新的;AJAX是一部分数据改变。
思维方式的转变:传统web应用时页面交互为主导、同步响应、非标准方式布局和开发、主要代码在server端,AJAX是数据交互为主导的、异步响应、有标准布局、页面段须要很多其它地代码。
AJAX的核心知识点(一):XMLHttpRequest对象
总结XMLHttpRequest五步使使用方法:
1、建立XMLHttpRequest对象
2、注冊回调函数
3、使用open方法设置和服务端交互的基本信息
4、设置发送的数据。開始和server端交互
5、在回调函数中推断交互是否结束,响应是否正确,并依据须要获取server端返回的数据,更新页面。
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
//使用封装方法的人,仅仅关心提供http的请求方法,url地址。成功和失败的方法
//类的构造定义,主要职责就是新建出XMLRequest对象
var MyXMLHttpRequest = function(){
//定义的不同浏览器的封装
var xmlhttprequest;
if(window.XMLHttpRequest){
xmlhttprequest = new XMLHttpRequest();
if(xmlhttprequest.overrideMimeType){
xmlhttprequest.overrideMimeType("text/xml");
}
}else if (window.ActiveXObject){
var activeName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i = 0; i < activeName.length;i++){
try{
xmlhttprequest = new ActiveXObject(activeName[i]);
break;
}catch(e){ }
}
}
if(xmlhttprequest === undefined || xmlhttprequest === null){
alert("XMLHttpRequest对象创建失败! !");
}else {
this.xmlhttp = xmlhttprequest;
}
};
//用户发送请求的方法
MyXMLHttpRequest.prototype.send = function(method,url,data,callback,failback) {
if(this.xmlhttp !== undefined && this.xmlhttp !== null){
method = method.toUpperCase();
if(method !== "GET" && method !=="POST"){
alert("HTTP的请求方法必须是GET或POST! !");
return;
}
if(url === null || url === underfined){
alert("HTTP的请求地址必须设置! ");
return;
}
var tempxmlhttp = this.xmlhttp;
this.xmlhttp.onreadystatechange = function(){
//请求发生改变的事件触发器
if(tempxmlhttp.readyState === 4){
//4=完毕。响应数据接收完毕
if(tempxmlhttp.status === 200){
var responseText = tempxmlhttp.responseText;
//server对应的文本内容
var responseXML = tempxmlhttp.responseXML;
//server对应的XNL内容对应的DOM对象 if(callback === undefined || callback === null){
alert("没有设置处理数据正确返回的方法!");
alert("返回的数据:" + responseText);
}else{
callback(responseText,responseXML);
}
}else{
if(failback === undefined || failback === null){
alert("没有设置处理数据返回失败的处理方法! ");
alert("HTTP的响应码:" + tempxmlhttp.status + ",响应码的文件信息:" +
temphttp.status);
}else{
failback(tempxmlhttp.status,tempxmlhttp.statusText);
}
}
}
};
//解决缓存的转换
if(url.indexOf("?") >= 0){
url = url + "&t" + (new Date()).valueOf();
}else{
url = url + "?" + (new Date()).valueOf();
}
//解决跨域问题
if(url.indexOf("http://") >= 0){
url.replace("?","&");
url = "Proxy?url=" + url;
} this.xmlhttp.open(method,url,true); //假设是POST方式。须要设置请求头
if(method === "POST"){
this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
} this.xmlhttp.send(data);
}else{
alert("XMLHttpRequest对象创建失败,无法发送数据! ");
}
};
MyXMLHttpRequest.prototype.abort = function(){
this.xmlhttp.abort();
};
分析代码:
代码大体上是说:首先对XMLHttpRequest对象的构造函数定义。当中就是对不同浏览器的封装。之后是定义了一个send方法,这种方法有几个參数:method有两个数“GET”和“POST”,url表示请求的server的地址,data是向server返回的数据;之后是注冊回调方法onreadystaechange,readstate有5个值,我们仅仅关心值为4的时候。即对应数据接收成功。之后攻克了一些小问题:跨域和Post缓存问题用url转换;最后封装了放弃使用request对象的方法。使用的时候。能够调用内部写的自己的方法。
callback和fallback实在javascript中写的。
总结:
AJAX会在之后会有更好的东西替代它,它仅仅是我们学习的一个阶段。一种新的事物,我们如今看可能是新的,比較传统的东西。会有它的不同点,一般人看到的可能很多其它地是它不同的地方,往往会忽略它与传统的共同点,我们换一种思维方式,就会发现,我们掌握了传统的基础之后,新的事物的不同的地方非常easy掌握。
AJAX核心--XMLHttpRequest五步法的更多相关文章
- Ajax使用的五步法
Ajax使用的五步法 <script type="text/javascript"> //用于保存XMLHttpRequest对象的变量,由于整个过 ...
- AJAX——核心XMLHttpRequest对象
AJAX大家已经都知道了,是为了实现异步通讯,提高用户体验度,而将很多旧知识(XML,DOM,JavaScript,HTML,Jquery,Css……)重新融合的一个新的知识框架.而,XMLHttpR ...
- AJAX 核心 —— XMLHTTPRequest 对象回顾
一.AJAX概述 不使用 AJAX 的网页,如果要更新内容,需要重载整个页面. AJAX ( Asynchronous Javascript And XML ,异步 Javascript 和 XML) ...
- Ajax核心——XMLHttpRequest基础
XMLHttpRequest对象负责将用户信息以异步方式发送到服务器,并接受服务器返回的相应信息和数据.也就是可以在页面已经加载后从后从服务器请求.接收数据,这样使得用户的体验度更好,而同时提升了客户 ...
- 详解AJAX核心 —— XMLHttpRequest 对象 (上)
我要说的内容都是非常基础的内容,高手就免看了,如果看了欢迎给点意见啊.新手或者对低层还不是很了解的人可以看看,帮助理解与记忆. XMLHttpRequest 对象是AJAX功能的核心,要开发AJAX程 ...
- [置顶] Ajax核心--XMLHttpRequest对象
XMLHttpRequest 对象是AJAX功能的核心,学习XMLHttpRequest对象就先从创建XMLHttpRequest 对象开始,了解在不同的浏览器中创建XMLHttpRequest 对象 ...
- Ajax核心--XMLHttpRequest对象
XMLHttpRequest 对象是AJAX功能的核心,学习XMLHttpRequest对象就先从创建XMLHttpRequest 对象开始,了解在不同的浏览器中创建XMLHttpRequest 对象 ...
- AJAX核心XMLHTTPRequest对象
老早就写好了总结.今天整理发表一下. XMLHttpRequest对象是AJAX的核心技术,XMLHttpRequest 是XMLHTTP 组件的对象,通过这个对象.AJAX能够像桌面应用程序一样仅仅 ...
- 详解AJAX核心 —— XMLHttpRequest 对象 (下)
继续上一篇的内容上一篇关于XMLHttpRequest 对象发送对服务器的请求只说到了用Get方式,没有说Post方式的.那是因为要说Post方式就需要先说另外一个东西,那就是DOM(Document ...
随机推荐
- 具体解释Redis源代码中的部分高速排序算法(pqsort.c)
看标题.你可能会疑惑:咦?你这家伙.怎么不解说完整的快排,仅仅讲一部分快排---.- 哎,冤枉. "部分快排"是算法的名字.实际上本文相当具体呢.本文差点儿与普通快排无异.看懂了本 ...
- ASPX和Razor
ASPX ASPX文件是微软的在server端运行的动态网页文件,通过IIS解析运行后能够得到动态页面,是微软推出的一种新的网络编程方法,而不是ASP的简单升级,由于它的编程方法和ASP有非常大的不同 ...
- Mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。
将select出的结果再通过中间表select一遍,这样就规避了错误.注意,这个问题只出现于mysql,mssql和oracle不会出现此问题. mysql中You can't specify tar ...
- Oracle 性能优化的基本方法
Oracle 性能优化的基本方法概述 1)设立合理的性能优化目标. 2)测量并记录当前性能. 3)确定当前Oracle性能瓶颈(Oracle等待什么.哪些SQL语句是该等待事件的成分). 4)把等待事 ...
- 求包含每个有序数组(共k个)至少一个元素的最小区间
title: 求包含每个有序数组(共k个)至少一个元素的最小区间 toc: false date: 2018-09-22 21:03:22 categories: OJ tags: 归并 给定k个有序 ...
- Spring学习笔记(二) 初探Spring
版权声明 笔记出自<Spring 开发指南>一书. Spring 初探 前面我们简单介绍了 Spring 的基本组件和功能,现在我们来看一个简单示例: Person接口Person接口定义 ...
- BZOJ 2212线段树的合并
借鉴(抄)了一下题解-- 线段树合并的裸题吧- //By SiriusRen #include <cstdio> #include <cstring> #include < ...
- [转]C# 位域[flags]
.NET中的枚举我们一般有两种用法,一是表示唯一的元素序列,例如一周里的各天:还有就是用来表示多种复合的状态.这个时候一般需要为枚举加上[Flags]特性标记为位域,例如: [Flags] enu ...
- Team Services 自动化部署项目
一.创建Team Services账号 直接使用vs的账号即可,TS上集成了Git.把项目导入到Git中. 使用前提:有自己的服务器,把项目自动化部署到服务器上. 二.创建一个新的定义 三.选择种类( ...
- (转载) listview实现微信朋友圈嵌套
listview实现微信朋友圈嵌套 标签: androidlistview 2016-01-06 00:05 572人阅读 评论(0) 收藏 举报 分类: android(8) 版权声明:本文为博 ...