老早就写好了总结。今天整理发表一下。

   XMLHttpRequest对象是AJAX的核心技术,XMLHttpRequest 是XMLHTTP 组件的对象,通过这个对象。AJAX能够像桌面应用程序一样仅仅同server进行数据层面的交换。而不用每次都刷新界面,也不用每次将数据处理的工作都交给server来做;这样既减轻了server负担又加快了响应速度、缩短了用户等待的时间。

XMLHttpRequest对象是开发人员的梦想,由于可以:

在不又一次载入页面的情况下更新网页

在页面已载入后从server请求数据

在页面已载入后从server接收数据

在后台向server发送数据

XMLHttpRequest对象的方法和属性就不再这里进行简绍了,由于大家都能够再网上查到。

这里简绍一下他的使用。

他的使用有五步:

①建立XMLHttpRequest对象

②注冊回调函数

③使用open方法设置和server端的交互的基本信息

④设置发送的数据,開始和server端进行交互

⑤在回调函数中推断交互式否结束,对应是否正确,并依据须要获取server返回的数据,更新页面内容。

以下我把自己做的视频样例的JS封装代码整理的一下。给大家看一下:

<span style="font-family:KaiTi_GB2312;font-size:18px;">//使用封装方法的人仅仅关心提供http的请求方法。数据,成功,和失败的回调方法
//类的构造定义,主要职责就是新建出XMLHttpRequest对象
var MyXMLHttpRequest=function(){
//1、创建XMLHTTPRequest对象
var xmlhttprequest;
//不同浏览器的封装
if(window.XMLHttpReuqest){
//IE7,IE8,firefox,MOailla,Safari,Opera等浏览器创建
xmlhttprequest=new XMLHttpReuqest();
//些版本号的Mozilla 浏览器处理server返回的未包括XML mime-type
//头部信息的内容时会出错。因此。要确保返回的内容包括text/xml 信息。
if (xmlhttprequest.overrideMineType){
xmlhttprequest.overrideMineType("text/xml");
}
}else if(window.ActiveXObject){
//IE6。 IE6.6,IE5
var activeName=["MSML2.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===undefined){
alert("HTTP的请求地址必须设置。");
return;
}
var tempxmlhttp=this.xmlhttp;
//2、注冊回调方法(这是当server返回信息是client的处理方式)
this.xmlhttp.onreadystatechange=function(){
//5、推断和server端的交互式否完毕,还要推断server端是否正确返回了数据
//readyState 值为4 的时候。代表server已经传回全部的信息。
//能够開始处理信息并更新页面内容了
if(tempxmlhttp.readyState===4){
//表示和server端的交互已经完毕
//XMLHttpRequest 对成功返回的信息有两种处理方式:
//responseText:将传回的信息当字符串使用;
//responseXML:将传回的信息当XML 文档使用,能够用DOM 处理。 if(tempxmlhttp.status===200){
//表示server的相应代码是200。正确的返回了数据
//纯文本数据的接受方法
var responseText=tempxmlhttp.responseText;
//XML数据相应的DOM对象的接受方法
//使用的前提是,server端须要设置content-type为text/xml
var responseXML=tempxmlhttp.responseXML;
//这是对页面端JS的处理
if (callback===undefined || callback===null){
alert("没有设置处理数据正确的返回方法");
alert("返回的数据:"+responseText);
}else{
callback(responseText,responseXML);
}
}else{
if (failback ===undefined || failback===null){
alert("没有设置处理数据失败的返回方法");
alert("HTTP的响应吗:"+tempxmlhttp.status+",相依吗的文本信息:"+tempxmlhttp.statusText);
}else{
failback(tempxmlhttp.status,tempxmlhttp.statusText);;
}
}
}
};
//解决缓存的转换--添加时间戳
if (url.indexOf("?")>=0){
url=url+"&t="+(new Date()).valueOf();
}else{
url=url+"? t="+(new Date()).valueOf();
} //解决跨域的问题
if (url.indexOf("http://")>=0){
url.replace("?","&");
url="Proxy?url="+url;
}
//3、设置和server端进行交互的參数(向server发出请求)
this.xmlhttp.open(method,url,true); //send 的參数假设是以Post 方式发出的话。能够是不论什么想传给server的内容。 //只是。跟form 一样,假设要传文件或者Post 内容给server。
//必须先调用setRequestHeader 方法,改动MIME 类别。 if (method ==="POST"){
this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
}
//4、设置项server端发送的数据,启动和server的交互
this.xmlhttp.send(data);
}else{
alert("XMLHttpRequest对象创建失败,无法发送数据。");
}
}; MyXMLHttpRequest.prototype.abort=function(){
this.xmlhttp.abort();
};</span>

注意:

1、注冊回调方法的方式有两种:①一种是JS文件里的写法。既是Javascript既是定义函数的方式定义对应函数。

xmlhttp.onreadystatechange=function(){}

②xmlhttp.onreadystatechange=callback;须要指出的时,这个函数名称不加括号,不指定參数。

2、向server发出请求的时候的

XMLHttpRequest 可以同步或异步地返回Web server的响应,而且可以以文本或者一个 DOM 文档的形式返回内容。

对于open方法的具体解释:默觉得true的时候表示异步

对于这个对象的扩展问题:

①添加时间戳的效果,解决浏览器的缓存问题。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">

以下这个事效果图:红框里的就是时间戳

这样能够防止网址一样来訪问缓存的问题HttRequest请求的缓存问题。

时间戳解决别的问题:如用户发帖的页面中,恶意程序来重复提交的问题

②解决跨域訪问问题。

跨域:当前网页訪问的server的域名和port不同了。就称为跨域訪问。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">

③解决中英文乱码问题:

对于这个原理我看的是是懂非懂的,

总之:XMLHTTPRequest对象用来在后台与server进行交换数据。



AJAX核心XMLHTTPRequest对象的更多相关文章

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

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

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

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

  3. Ajax核心--XMLHttpRequest对象

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

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

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

  5. AJAX——核心XMLHttpRequest对象

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

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

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

  7. js进阶ajax的XMLHttpRequest对象的status和statustext属性(如果ajax和php联合使用的话:open连接服务器的第二个参数文件路径改成请求php的url即可)

    js进阶ajax的XMLHttpRequest对象的status和statustext属性(如果ajax和php联合使用的话:open连接服务器的第二个参数文件路径改成请求php的url即可) 一.总 ...

  8. Ajax技术---核心XMLHttpRequest对象

    Ajax 的全称是Asynchronous JavaScript and XML,其中,Asynchronous 是异步的意思,它有别于传统web开发中采用的同步的方式. (一)ajax技术的意义 我 ...

  9. AJAX的核心XMLHttpRequest对象

    为了实现异步通讯,提高用户体验度,而将很多旧知识(XML,DOM,JavaScript,HTML,jQuery,Css...)重新融合程一个新的知识框架.而XMLHttpRequest对象则是其中的重 ...

随机推荐

  1. 【转】使用信号监控 Django 模型对象字段值的变化

    转载出处:http://blog.csdn.net/pushiqiang/article/details/74949465 Django 信号 (Signals) 的功能类似于 WordPress 的 ...

  2. H5系列之地理位置(必知必会)

    H5之地理位置必知必会     [02]概念   规范地址:http://www.w3.org/TR/geolocation-API/     HTML5 Geolocation(地理定位)用于定位用 ...

  3. luogu2483 【模板】k短路([SDOI2010]魔法猪学院)

    模板题 #include <iostream> #include <cstring> #include <cstdio> #include <queue> ...

  4. JMeter学习笔记21-如何添加思考时间

    本文来介绍,JMeter如何插入思考时间.前面介绍过一个真实的性能测试场景,是需要加入思考时间,来模拟真实用户行为.本文就来介绍,如何在三个请求之间添加思考时间. 1. 在Test Plan下新建一个 ...

  5. ASP.NET中一般处理程序报的错误:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值

    1.把context.Response.End();代码换成 HttpContext.Current.ApplicationInstance.CompleteRequest(); 2.把context ...

  6. hdu 4764 巴什博弈

    Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  7. TheBrain8破解方式

    破解文件下载地址:http://rghost.net/51736270 mac破解方式: 我用的MAC 装的8007版本的,今天竟然提示要升级专业版本了.补救方法是,先打开TB,把之前手贱输入的云服务 ...

  8. 算法复习——floyd求最小环(poj1734)

    题目: 题目描述 N 个景区,任意两个景区之间有一条或多条双向的路来连接,现在 Mr.Zeng 想找一条旅游路线,这个路线从A点出发并且最后回到 A 点,假设经过的路线为 V1,V2,....VK,V ...

  9. 解析XML字符串为json对象

    var overtime='<?xml version="1.0" encoding="UTF-8"?><response><co ...

  10. gitweb 搭建教程

    1. 前言 git 是一个版本控制工具,类似svn. 本文内容主要涉及git仓库通过浏览器访问(用web的方式去查看git提交历史记录,tag,branch等信息),即gitweb. 效果图: 在这里 ...