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 ...
随机推荐
- Android数据库高手秘籍:SQLite命令
要想熟练地操作任何一个数据库,最最基本的要求就是要懂SQL语言,这也是每个程序员都应该掌握的技能.虽说SQL博大精深,要想精通确实很难,但最基本的一些建表命令,增删改查,大家还是必须要学会的. SQL ...
- rails Installer之后的调整rails.bat等文件
rails Installer之后的调整rails.bat文件 出现系统找不到指定路径 学习了:http://www.jianshu.com/p/065355a731ee 修改rails.bat为 @ ...
- linux虚拟机网络设置(本机使用wiff,自己的网)
一.linux虚拟机网络设置(https://jingyan.baidu.com/album/4e5b3e1957979d91901e24f1.html?picindex=16) 选中虚拟机,点击 ...
- VMware-workstation安装
下载:百度搜索VMware-workstation 开始安装:VMware-workstation-full_12.5.5.17738 更改安装目录F:\softwore\VMware\VMware ...
- java删除文件夹及子目录
package test; import java.io.FileNotFoundException; import java.io.IOException; import java.io.File; ...
- hdoj--1248--寒冰王座(完全背包)
寒冰王座 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 微信开发中的序列化json问题..
微信开发平台: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list& ...
- Python笔记(八)
#-*-coding:utf-8-*- # Python内置函数 print abs(-45) # 绝对值函数 print divmod(7,2) # 返回一个包含商和余数的元组 # input(&q ...
- C++ MAP使用
1. map的构造函数map<int,string> maphai;map<char,int> maphai;map<string,char> mapstring; ...
- python3 pymysql学习笔记
练手项目需要用到mysql就顺手把mysql也学了,这个模块没什么好说的,比较简单,实际整个过程我都是在学mysql语句,但还是发现了一些问题. fetchall() 获取结果集中的所有行 这个函数难 ...