引言:

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五步法的更多相关文章

  1. Ajax使用的五步法

    Ajax使用的五步法 <script type="text/javascript">           //用于保存XMLHttpRequest对象的变量,由于整个过 ...

  2. AJAX——核心XMLHttpRequest对象

    AJAX大家已经都知道了,是为了实现异步通讯,提高用户体验度,而将很多旧知识(XML,DOM,JavaScript,HTML,Jquery,Css……)重新融合的一个新的知识框架.而,XMLHttpR ...

  3. AJAX 核心 —— XMLHTTPRequest 对象回顾

    一.AJAX概述 不使用 AJAX 的网页,如果要更新内容,需要重载整个页面. AJAX ( Asynchronous Javascript And XML ,异步 Javascript 和 XML) ...

  4. Ajax核心——XMLHttpRequest基础

    XMLHttpRequest对象负责将用户信息以异步方式发送到服务器,并接受服务器返回的相应信息和数据.也就是可以在页面已经加载后从后从服务器请求.接收数据,这样使得用户的体验度更好,而同时提升了客户 ...

  5. 详解AJAX核心 —— XMLHttpRequest 对象 (上)

    我要说的内容都是非常基础的内容,高手就免看了,如果看了欢迎给点意见啊.新手或者对低层还不是很了解的人可以看看,帮助理解与记忆. XMLHttpRequest 对象是AJAX功能的核心,要开发AJAX程 ...

  6. [置顶] Ajax核心--XMLHttpRequest对象

    XMLHttpRequest 对象是AJAX功能的核心,学习XMLHttpRequest对象就先从创建XMLHttpRequest 对象开始,了解在不同的浏览器中创建XMLHttpRequest 对象 ...

  7. Ajax核心--XMLHttpRequest对象

    XMLHttpRequest 对象是AJAX功能的核心,学习XMLHttpRequest对象就先从创建XMLHttpRequest 对象开始,了解在不同的浏览器中创建XMLHttpRequest 对象 ...

  8. AJAX核心XMLHTTPRequest对象

    老早就写好了总结.今天整理发表一下. XMLHttpRequest对象是AJAX的核心技术,XMLHttpRequest 是XMLHTTP 组件的对象,通过这个对象.AJAX能够像桌面应用程序一样仅仅 ...

  9. 详解AJAX核心 —— XMLHttpRequest 对象 (下)

    继续上一篇的内容上一篇关于XMLHttpRequest 对象发送对服务器的请求只说到了用Get方式,没有说Post方式的.那是因为要说Post方式就需要先说另外一个东西,那就是DOM(Document ...

随机推荐

  1. Dynamics CRM2013 6.1.1.1143版本号插件注冊器的一个bug

    近期在做的项目客户用的是CRM2013sp1版本号,所以插件注冊器使用的也是与之相应的6.1.1.1143,悲剧的事情也因此而開始. 在插件中注冊step时,工具里有个run in user's co ...

  2. 单机 &amp; 弱联网手游 防破解、金币改动 简单措施

    手游经常使用破解方法 对于一个弱联网或者单机游戏,能够从下面方面去破解: 1.找得到存档文件的,直接破解改动存档文件. 2.找不到存档文件,就在游戏执行时借助一些软件来改动数值,比方用各种改动器手游助 ...

  3. android开发一些小bug

    1.一定要注意findViewId这种方法,尤其是含有多个同样的R.id的名字时,debug时不会当场报错.但随后会报空指针错误 2.List转换为Array能够这样处理: ArrayList< ...

  4. openssl之EVP系列之2---对称加密算法概述

    openssl之EVP系列之2---对称加密算法概述     ---依据openssl doc/crypto/EVP_EncryptInit.pod和doc/ssleay.txt cipher.doc ...

  5. Linux 下配置,安装Hadoop

    1.从官网上下载hadoop-2.4.1.tar.gz,我的版本为hadoop-2.4.1,可在http://pan.baidu.com/s/1cLAKCQ 下载. 2.解压hadoop-2.4.1. ...

  6. TCP/IP协议族简介

    OSI网络分层介绍 网络结构的标准模型是OSI模型,由国际互联网标准化组织定义的网络分层模型.虽然目前没有完全按照这种模型实现的网络协议栈,但是学习这个模型对于我们理解网络协议还是很有帮助的. 1.O ...

  7. ROS-SLAM-gmapping

    前言:gmapping是最常用和成熟的slam导航算法,gmapping功能包集成了Rao-Blackwellized粒子滤波算法,为开发者隐去了复杂的内部实现. 前提:已下载并编译了相关功能包集,如 ...

  8. caffe study- AlexNet 之算法篇

    在机器学习中,我们通常要考虑的一个问题是如何的“以偏概全”,也就是以有限的样本或者结构去尽可能的逼近全局的分布.这就要在样本以及结构模型上下一些工夫. 在一般的训练任务中,考虑的关键问题之一就是数据分 ...

  9. Rsync 服务器搭建

    Rsync简介 rsync 是一个 Unix 系统下的文件同步和传输工具. 它具备以下特性: 1. 能更新整个目录和树和文件系统 2. 有选择性的保持符号链链.硬链接.文件属于.权限.设备以及时间 等 ...

  10. 【转】SQL语句删除和添加外键、主键

    --删除外键 语法:alter table 表名 drop constraint 外键约束名 如: alter table Stu_PkFk_Sc drop constraint FK_s alter ...