Prototype学习笔记(二)
Chapter 3. Ajax
参考文档的第三章主要内容是Prototype框架中的Ajax技术,Prototype的Ajax主要靠三个对象实现:Ajax.Request、Ajax.Updater、Ajax.PeriodicalUpdater,看到这几个名字应该就知道它们怎么用了。这三个对象是功能类,除此之外还有两个对象是作为参数用的:Ajax.Options、Ajax.Response,还有一个对象是Ajax.Responders。下面一个个开始介绍:
- Ajax.Options:包括了Ajax里面所有的“选项”和“回调函数定义”,但你在使用三个功能类的时候,其参数类型都是在这里定义的,可能说的不够清楚,等后面看了例子就明白了,继续~~
- asynchronours:默认为true,指示请求是否异步进行。这没什么好设的,如果为false那就是同步请求了,没什么意义。
- contentType:你发送的请求的文档类型,默认为’application/x-www-form-urlencoded’。
- encoding:你发送的请求的编码类型,默认为”utf-8”。
- method:发送请求的类型,默认为”post”,这个是最常用的参数了。
- parameters:发送的请求的参数,如果发送请求类型为’get’,则相当于URL参数。
- ……其他还有许多参数,这里不一一说明了,大家可以查阅参考文档。
- Ajax.Response:这个对象是下面三个功能对象将会接受到的参数,它有很多属性,常用的有:status,statusText,readyState,responseText,responseXML,responseJSON,transport(这个是发送请求的对象,也就是XHR。
- Ajax.Responders:这个对象主要功能是注册事件,例如下面的代码:
-
12345678Ajax.Responders.register({onCreate: function() {Ajax.activeRequestCount++; //这个变量表明当前激活的XHR请求},onComplete: function() {Ajax.activeRequestCount--;}});
-
1通过这样注册之后当发生对应事件时就会回调你自己写的函数,我没试过,按照参考文档应该是这么个意思。
-
- Ajax.Request:这个对象实现在后台发送一个请求,相当于一个XmlHttpRequest。例如下面的代码:
-
123456new Ajax.Request('GetGoodsProxy', {method: 'get',onSuccess: function(transport) {alert(transport.responseText);}});
-
- Ajax.Updater:这个对象将发送一个请求,并且更新DOM文档,不过有点需要注意的是它的onComplete事件是在文档被更新之后才调用的,而跟其他的不一样,在请求完成的时候就调用。调用代码如下:
-
12345new Ajax.Updater('moststoragegood', 'GetGoodsProxy', {method: 'get',parameters: {ismoststoragegood: 'true'},insertion: Insertion.Bottom});
-
- Ajax.PeriodicalUpdater:这个对象与Ajax.Updater对象功能差不多,它是周期性的更新,就是没过一段时间就更新内容。需要注意的是它与Ajax.Updater对象名字很像,但是他们之间没有继承关系,比如Updater有个方法叫evalJSON,但是PeriodicalUpdater对象没有。PeriodicalUpdater还允许你随时启用或禁用刷新。调用代码如下:
-
12345new Ajax.PeriodicalUpdater('autoupdatecontent', 'GetGoodsProxy', {method: 'get',frequency: 1,decay: 1});
- 它有两个比较重要的参数
- frequency:发送的频率,以秒为单位
- decay:这个参数比较特殊,它的作用是在响应内容没有变化的时候,frequency=frequency X decay,比如你设定frequency为1秒,decay为5,那么当你某次请求响应的内容与上次没有变化的时候,第二次请求的时间间隔会变成5秒,再没变化就是25秒了,当有变化之后,这个参数会重置为5,可想而知,这个参数还是比较危险的,慎用。
-
我的环境是:
Visual Studio 2005
源代码:
Jun07