Ajax是什么东东,想必大家想不知道都难,所以这里不再废话了。
但是这里还要重复一下,xmlHttp的来历,尽管本人不太喜欢微软,但是好像微软还是出了很多好玩的东东,包括这里的主角--xmlHttp。
我的理解是,xmlHttp是一个类用来支持Javascript向服务端发送消息。最先是微软在Internet Explorer中以ActiveX的方式来引用这个一个类,被叫做了XmlHttp。这样一个带来很酷玩法的家伙诞生了。接下来,大家都觉得这个东东不错,于是乎,Mozzila,safari...都提供了这样一个类,差不多都叫XMLHttpRequest吧???它们都提供一种的方法和属性,于是乎Ajax就差不多该出来了!
因为,各家浏览器和微软提供的方式不一样,所以要使用xmlHttp的话,就要做点小动作了:
CreatXmlHttp
这是我见过并改进后个人觉得最全面的方法,至于“Msxml2.XMLHTTP”和“Microsoft.XMLHTTP”这两个东东到底有什么差别,我也没查过,你可google 或baidu一下,回头告我,反正我是懒得查了(这几天.net包装Word的控件都快把我折腾疯了,NND,微软出哪么多版本哎)。
OK,现在xmlHttp创建好了,然后就可以调用Open方法对它进行初始化:
http-method:HTTP的通信方式,比如GET或是POST;这里顺便说说两者的区别:
1、get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一 一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放 置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
2、 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端 用Request.Form获取提交的数据。两种方式的参数都可以用Request来获得。
3、get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。 但理论上,IIS4中最大量为80KB,IIS5中为100KB。
4、get安全性非常低,post安全性较高。
如果用xmlHttp方式提交的话,好像get和post的第1、2条根本没有区别吧哈哈:)
url:接收XML数据的服务器的URL地址。通常在URL中要指明ASP或CGI程序(当然也可以是aspx了)
async:一个布尔标识,说明请求是否为异步的。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作
userID:用户ID,用于服务器身份验证
password:用户密码,用于服务器身份验证
嗯,现在已经提交了,然后就该调用Send方法发送XML数据:
这里重点要说的是XMLHTTP对象中的readyState属性,其能够反映出服务器在处理请求时的进展状况。客户机的程序可以根据这个状态信息设置相应的事件处理方法。属性值及其含义如下表所示:
但是这里还要重复一下,xmlHttp的来历,尽管本人不太喜欢微软,但是好像微软还是出了很多好玩的东东,包括这里的主角--xmlHttp。
我的理解是,xmlHttp是一个类用来支持Javascript向服务端发送消息。最先是微软在Internet Explorer中以ActiveX的方式来引用这个一个类,被叫做了XmlHttp。这样一个带来很酷玩法的家伙诞生了。接下来,大家都觉得这个东东不错,于是乎,Mozzila,safari...都提供了这样一个类,差不多都叫XMLHttpRequest吧???它们都提供一种的方法和属性,于是乎Ajax就差不多该出来了!
因为,各家浏览器和微软提供的方式不一样,所以要使用xmlHttp的话,就要做点小动作了:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
OK,现在xmlHttp创建好了,然后就可以调用Open方法对它进行初始化:
1 xmlDom = CreateXmlHttp();
2 /*下面是Open原型:
3 /xmlDom.Open(http-method,url,async,userID,password ));*/
很明显Open方法中包含了5个参数,前三个是必要的,后两个是可选的(在服务器需要进行身份验证时提供)。参数的含义如下所示:2 /*下面是Open原型:
3 /xmlDom.Open(http-method,url,async,userID,password ));*/
http-method:HTTP的通信方式,比如GET或是POST;这里顺便说说两者的区别:
1、get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一 一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放 置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
2、 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端 用Request.Form获取提交的数据。两种方式的参数都可以用Request来获得。
3、get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。 但理论上,IIS4中最大量为80KB,IIS5中为100KB。
4、get安全性非常低,post安全性较高。
如果用xmlHttp方式提交的话,好像get和post的第1、2条根本没有区别吧哈哈:)
url:接收XML数据的服务器的URL地址。通常在URL中要指明ASP或CGI程序(当然也可以是aspx了)
async:一个布尔标识,说明请求是否为异步的。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作
userID:用户ID,用于服务器身份验证
password:用户密码,用于服务器身份验证
嗯,现在已经提交了,然后就该调用Send方法发送XML数据:
1 xmlDom.send(var obj); //obj可以是字符串、DOM树或任意数据流.
发送数据的方式分为同步和异步两种。在异步方式下,数据包一旦发送完毕,就结束Send进程,客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。
这里重点要说的是XMLHTTP对象中的readyState属性,其能够反映出服务器在处理请求时的进展状况。客户机的程序可以根据这个状态信息设置相应的事件处理方法。属性值及其含义如下表所示:
值 说明
0 Response对象已经创建,但XML文档上载过程尚未结束(请求没有发出(在调用open()之前))
1 XML文档已经装载完毕(请求已建立但还没有发出(调用send()之前))
2 XML文档已经装载完毕,正在处理中(请求已发出正在处理之中 )
3 部分XML文档已经解析(请求已经处理, 通常有部分数据可用, 但服务器还没有完成响应)
4 文档已经解析完毕,客户端可以接受返回消息(响应已完成, 可以访问服务器响应并使用数据)
客户机处理响应信息,客户机接收到返回消息后,进行简单的处理,基本上就完成了C/S之间的一个交互周期。客户机接收响应是通过XMLHTTP对象的属性实现的:
0 Response对象已经创建,但XML文档上载过程尚未结束(请求没有发出(在调用open()之前))
1 XML文档已经装载完毕(请求已建立但还没有发出(调用send()之前))
2 XML文档已经装载完毕,正在处理中(请求已发出正在处理之中 )
3 部分XML文档已经解析(请求已经处理, 通常有部分数据可用, 但服务器还没有完成响应)
4 文档已经解析完毕,客户端可以接受返回消息(响应已完成, 可以访问服务器响应并使用数据)
responseText:将返回消息作为文本字符串;
responseBody:将返回消息作为HTML文档内容;
responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用;
responseStream:将返回消息视为Stream对象
别附:
responseBody:将返回消息作为HTML文档内容;
responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用;
responseStream:将返回消息视为Stream对象
XmlHttp的status属性:
200:表示一切顺利
404:表示找不到页面
网上有个哥们说,在本地测试的话不管是正常还是找不到页面都会返回0这个值,但我没有碰到过,写在这里或许能帮你一把呵呵
网上有个哥们说,在本地测试的话不管是正常还是找不到页面都会返回0这个值,但我没有碰到过,写在这里或许能帮你一把呵呵