original article by sp('Sergio Pereira') Sergio Pereira
last update: March 30th 2006
中文版:THIN
最后更新:2006-3-31
prototype.js 是什么?
万一你没有使用过大名鼎鼎的prototype.js,那么让我来告诉你,prototype.js是由Sam Stephenson写的一个javascript类库。这个构思奇妙,而且兼 容标准的类库,能帮助你轻松建立有高度互动的web2.0 特性的富客户端页面。
如果你最近尝试使用它,你大概了解到文档并不是作者的一个强项。和在我以前使用这个类库的不少开发者一样,一开始,我不得不一头扎进阅读 prototype.js 的源代码和实验它的功能中。我想,在我学习完它之后,把我学到的东西分享给大家是件不错的事。
同时,在本文中,我也将提供一个关于这个类库提供的objects,classes,functions,extensions这对东东的非官方参考
在阅读这个文档时,熟悉 Ruby 的开发者将会注意到 Ruby 的一些内建类和本类库扩展实现之间非常相似。
相关文章
Advanced JavaScript guide.
一些实用的函数
这个类库带有很多预定义的对象和实用函数,这些东东的目的显然是把你从一些重复的打字中解放出来 。
使用$()方法
$() 方法是在 DOM 中使用过于频繁的 document.getElementById() 方法的一个便利的简写,就像这个 DOM 方法一样,这个方法返回参数传入的 id 的那个元素。
比起 DOM 中的方法,这个更胜一筹。你可以传入多个 id 作为参数然后 $() 返回一个带有所有要求的元素的一个 Array 对象。
This is a paragraph
This is another paragraph
另外一个好处是,这个函数能传入用 string 表示的对象 ID,也可以传入对象本身,这样,在建立其它能传两种类型的参数的函数时非常有用。
使用$F()函数
$F()函数是另一个大收欢迎的“快捷键”,它能用于返回任何表单输入控件的值,比如 text box,drop-down list。这个方法也能用元素 id 或元素本身做为 参数。
使用$A()函数
$A()函数能把它接收到的单个的参数转换成一个 Array 对象。
这个方法,结合被本类库扩展了的 Array 类,能方便的把任何的可枚举列表转换成或拷贝到一个 Array 对象。一个推荐的用法就是把 DOM Node Lists 转换成一个普通的 Array 对象,从而更有效率的进行遍历,请看下面的例子。
使用 $H() 函数
$H()函数把一些对象转换成一个可枚举的和联合数组类似的 Hash 对象。
使用$R()函数
$R()是 new ObjectRange(lowBound,upperBound,excludeBounds)的缩写。
跳到ObjectRange 类文档可以看到一个关于此类的完整描述. 此时,我们还是先来看一个例子以展示这个缩写能代替哪些方法吧。其它相关的一些知识可 以在Enumerable 对象文档中找到。
使用Try.these()函数
Try.these() 方法使得实现当你想调用不同的方法直到其中的一个成功正常的这种需求变得非常容易, 他把一系列的方法作为参数并且按顺序的一
个一个的执行这些方法直到其中的一个成功执行,返回成功执行的那个方法的返回值。
在下面的例子中, xmlNode.text在一些浏览器中好用,但是xmlNode.textContent在另一些浏览器中正常工作。 使用 Try.these()
方法我们可以得到正常工作的那个方法的返回值。
Ajax对象
上面提到的共通方法非常好,但是面对它吧,它们不是最高级的那类东西。它们是吗?你很可能自己编写了这些甚至在你的脚本里面有类似功能的方法。 但是这些方法只是冰山一角。
我很肯定你对 prototype.js 感兴趣的原因很可能是由于它的 AJAX 能力。所以让我们解释当你需要完成 AJAX 逻辑的时候,这个包如何让它更容易。
Ajax 对象是一个预定义对象,由这个包创建,为了封装和简化编写AJAX 功能涉及的狡猾的代码。 这个对象包含一系列的封装AJAX逻辑的类。我们来
看看其中几个类。
使用Ajax.Request类
如果你不使用任何的帮助程序包,你很可能编写了整个大量的代码来创建 理它。当你不需要支持多于一种类型的浏览器时你会感到非常的幸运。 XMLHttpRequest对象并且异步的跟踪它的进程, 然后解析出响应 然后处
为了支持 AJAX 功能。这个包定义了 Ajax.Request 类。
假如你有一个应用程序可以通过url http://yoursever/app/get_sales?empID=1234&year=1998与服务器通信。它返回下面这样的XML 响应。
用 Ajax.Request对象和服务器通信并且得到这段 XML是非常简单的。下面的例子演示了它是如何完成的。
你注意到传入 Ajax.Request构造方法的第二个对象了吗? 参数 {method: 'get', parameters: pars, onComplete:
showResponse}
parameters
表示一个匿名对象的真实写法。他表示你传入的这个对象有一个名为 method 值为 'get'的属性,另一个属性名为
包含HTTP请求的查询字符串,和一个 onComplete 属性/方法包含函数 showResponse。
还有一些其它的属性可以在这个对象里面定义和设置,如
认值是 true)。
asynchronous,可以为true false 或 来决定AJAX对服务器的调用是否是异步的(默
这个参数定义AJAX调用的选项。在我们的例子中,在第一个参数通过HTTP GET命令请求那个url,传入了变量
Ajax.Request 对象在它完成接收响应的时候将调用 showResponse 方法。
pars包含的查询字符串,
也许你知道, XMLHttpRequest在 HTTP请求期间将报告进度情况。这个进度被描述为四个不同阶段:Loading, Loaded, Interactive, 或
Complete。你可以使
选项参数中的名为
参数是
Ajax.Request 对象在任何阶段调用自定义方法 ,Complete 是最常用的一个。想调用自定义的方法只需要简单的在请求的
onXXXXX 属性/方法中提供自定义的方法对象。 就像我们例子中的 onComplete 。你传入的方法将会被用一个参数调用,这个
XMLHttpRequest 对象自己。你将会用这个对象去得到返回的数据并且或许检查包含有在这次调用中的HTTP结果代码的 status 属性。
还有另外两个有用的选项用来处理结果。我们可以在 onSuccess 选项处传入一个方法,当AJAX无误的执行完后调用,相反的,也可以在 onFailure
选项处传入一个方法,当服务器端出现错误时调用。正如
XMLHttpRequest对象。
onXXXXX 选项传入的方法一样,这两个在被调用的时候也传入一个带有AJAX请求的
我们的例子没有用任何有趣的方式处理这个 XML 响应, 我们只是把这段 XML 放进了一个文本域里面。对这个响应的一个典型的应用很可能就是找到其 中的想要的信息,然后更新页面中的某些元素, 或者甚至可能做某些 XSLT 转换而在页面中产生一些 HTML。
在 1.4.0 版本中,一种新的事件回传外理被引入。如果你有一段代码总是要为一个特殊的事件执行,而不管是哪个AJAX调用引发它,那么你可以使用新 的Ajax.Responders对象。
假设你想要在一个 AJAX 调用正在运行时,显示一些提示效果,像一个不断转动的图标之类的,你可以使用两个全局事件 Handler 来做到,其中一个在第 一个调用开始时显示图标,另一个在最后一个调用完成时隐藏图标。看下面的例子。
Loading...更完全的解释,请参照 Ajax.Request 参考 和 Ajax选项参考。
使用Ajax.Updater类
如果你的服务器的另一端返回的信息已经是HTML了,那么使用这个程序包中 Ajax.Updater 类将使你的生活变得更加得容易。用它你只需提供哪一
个元素需要被AJAX请求返回的HTML填充就可以了,例子比我写说明的更清楚。
你可以看到,这段代码比前面的例子更加简洁,不包括 如何在客户端处理服务器段错误成为可能。 onComplete 方法,但是在构造方法中传入了一个元素id。 我们来稍稍修改一下代码来描述
我们将加入更多的选项, 指定处理错误的一个方法。这个是用 onFailure 选项来完成的。我们也指定了一个 placeholder 只有在成功请求之
后才会被填充。为了完成这个目的我们修改了第一个参数从一个简单的元素id到一个带有两个属性的对象,
failure (有地方出问题的时候被用到) 在下面的例子中没有用到
success (一切OK的时候被用到) 和
reportError 方法。 failure属性,而仅仅在 onFailure 处使用了
如果你的服务器逻辑是连同HTML 标记返回JavaScript 代码,
JavaScript,你只需在最后参数的对象构造方法中简单加入
Ajax.Updater对象可以执行那段 JavaScript代码。为了使这个对象对待响应为
evalScripts: true属性。但是值得提醒的是,像这个选项名 evalScripts暗示的,这
些脚本会被执行,但是它们不会被加入到Page的脚本中。“有什么区别?”,可能你会这样问。我们假定请求地址返回的东东像这样:
如果你以前这样尝试过,你知道这些脚本不会如你所期望的那样工作,原因是这段脚本会被执行,但像上面这样的脚本执行并不会创建一个名叫 sayHi 的 函数,它什么也不做。如果要创建一个函数,我们应当把代码改成下面这个样子:
为什么我们在上面的代码中不使用 var 关键字来声明这个变量呢(指 sayHi ),因为那样做创建出来的函数将只是当前脚本块的一个局部变量(至少在 IE 中是这样)。不写 var 关键字,创建出来的对象的作用域就是我们所期望的 window。
更多相关知识,请参看 Ajax.Updater reference 和options reference.
枚举... 噢!噢!
你知道,我们都是这样来做循环的,建一个 Array,用 elements 组织它们,再建一个循环结构(例如 for,foreach,while)通过 index 数字来访问每一个 element,再用这个 element 做一些动作。
当你想到这时,你会发现几乎每次写循环代码你都会迟早用到一个 Array。那么,如果 Array 对象能够提供更多的功能给它们的迭代器使用不是很爽吗? 确实是这样,事实上很多的编程语言都在它们的 Array 或其它类似的结构中(如 Collections,Lists)提供一些这样的功能。
现在好了,prototype.js了给我们一个 Enumerable对象,它实现了很多和可迭代数据进行交互的窍门。和原有的JS对象相比prototype.js更上一层楼, 它对Array 类s扩展了所有枚举要用的函数。
循环, Ruby 样式的
在标准的 javascript 中,如果你想把一个 array 中的所有 elements 显示出来,你可以像下面代码这样写得很好:
使用我们新的最好的朋友,prototype.js,我们可以把它生写成这样
function showList(){ var simpsons = ['Homer', 'Marge', 'Lisa', 'Bart', 'Meg'];
simpsons.each( function(familyMember){ alert(familyMember); });
}
你可能会想“非常奇怪的方式...相对旧的,这种语法太怪异了”。哦,在上面的例子,确实什么也没有,在这个简单得要死例子中,也没有改变太多啊,尽 管如此,请继续读下去。
在继续下面内容之前,你注意到那个被做为一个参数传递给 each 函数的函数?我们把它理解成迭代器函数。
Your arrays on steroids
就如我们上面提到的,把你的 Array 中的 elements 当成相同的类型使用相同的属性和函数是很通用(Common,不知该翻译成通用还是庸俗)的。让我们 看看怎么样利用我们新的马力强劲的 Arrays 的迭代功能吧。
依照标准找到一个 element。
现在我们再下一城,看看如何过滤一个 Array 中的元素,从每个元素中得到我们想要的成员。
This text has a lot of links. Some are external and some are local
上面的代码仅仅是一点小小的实践让人爱上这种语法。请参看 Enumerable和Array的所有函数
prototype.js 参考
JavaScript 类扩展
prototype.js 类库实现强大功能的一种途径是扩展已有的 JavaScript 类。
对 Object的扩展
Method extend(destination, source)
Kind
static
Arguments destination: any object, source: any object
inspect(targetObj) static targetObj: any object
Description 提供一种通过拷贝所有源以象属性和函数到目标函数实现继承的方 法 返回可读性好关于目标对象的文字描述,如果对象实例没有定义一 个 inspect 函数,默认返回 toString 函数的值。
对Number的扩展
Method Kind Arguments
toColorPart() instance (none)
succ() instance (none)
times(iterator) instance
iterator: a function object conforming to Function(index)
Description 返回数字的十六进制表示形式。在把一个 RGB 数字转换成 HTML 表现 形式时很有用。 返回下一个数字,这个方法可用于迭代调用场景中。 Calls the iterator function repeatedly passing the current index in the index argument. 反复调用iterator函数并传递当前index到 iterator的index参数。
下面的例子用提示框显示 0-9。
对 Function扩展
Method Kind
Arguments object: the object
bind(object)
instance that owns the method object: the object
Description 返回 function 的实例,这个实例和源 function 的结构一样,但是 它已被绑定给了参数中提供的 object,就是说,function 中的 this 指针指向参数 object。
bindAsEventListener(object) instance that owns the method 用法和上面的 bind 一样,区别在于用来绑定事件。
让我们看看如何运用这些扩展。
Test? 对String的扩展
Method stripTags() stripScripts() escapeHTML() Kind Arguments instance (none) instance (none) instance (none)
unescapeHTML() instance (none) extractScripts() instance (none) evalScripts() instance (none) toQueryParams() instance (none)
parseQuery() toArray() instance (none) instance (none)
camelize() instance (none)
Description 返回一个把所有的 HTML 或 XML 标记都移除的字符串。 返回一个把所有的 script 都移除的字符串。 返回一个把所有的 HTML 标记合适的转义掉的字符串。 escapeHTML()的反转。 返回一个包含在 string 中找到的所有 在 prototype.js 中定义新的对象和类
另一个这个程序包帮助你的地方就是提供许多既支持面向对象设计理念又有共通功能的许多对象。
The PeriodicalExecuter object
这个对象提供一定间隔时间上重复调用一个方法的逻辑。
Method [ctor](callback, interval) Property callback frequency
Kind
constructor
Type
Arguments callback: a parameterless function, interval: number of seconds Description Description 创建这个对象的实例将会重复调用给 定的方法。
Function() 被调用的方法,该方法不能传入参数。
Number
currentlyExecuting Boolean
以秒为单位的间隔。 表示这个方法是否正在执行。
The Prototype object
Prototype 没有太重要的作用,只是声明了该程序包的版本 。
Property Version Type String
Description 版本。 空函数。
emptyFunction Function()
K Function(obj) 一个仅仅回传参数的函数。
ScriptFragment String 识别 script 的正则式。
The Enumerable object
Enumberable 对象能够已更优雅的方式实现对列表样式的结构进行枚举。
很多其它的对象通过扩展自 Enumberable 对象来得到这些有用的接口。
Method Kind
Arguments iterator: a function object Description
each(iterator)
instance conforming to Function(value, index)
把每个 element 做为第一个参数,element 的 index 作为 第一个参数调用 iterator 函数。
iterator: a function object
这个函数会用给出的 iterator 测试整个集合,如果集合中任 一元素在 iterator 函数测试中返回 false 或 null,那么这个
all([iterator]) instance conforming to Function(value, 函数返回 false,否则返回 true。如果没有给出 iterator,那
index)
iterator: a function object
么就会测试所有的元素是不是不等于 false 和 null。你可以 简单的把它看成是“检测每个元素都为非空非负”。 这个函数会用给出的 iterator 测试整个集合,如果集合中任 一元素在 iterator 函数测试中返回 true,那么这个函数返
any(iterator) instance conforming to Function(value, 回 true,否则返回 false。如果没有给出 iterator,那么就会
index), optional.
测试所有的元素是不是有一个不等于 false 和 null。你可以 简单的把它看成是“检测元素中是不是有非空非负的”。
collect(iterator)
iterator: a function object instance conforming to Function(value, index) iterator: a function object
调用 iterator 函数根据集合中每个元素返回一个结果,然 后按照原来集合中的顺序,返回一个 Array。
集合中每个元素调用一次 Iterator,返回第一个使 Iterator
detect(iterator) instance conforming to Function(value, 返回 True 的元素,如果最终都没有为 true 的调用,那么返
index) instance (none) iterator: a function object 回 null。 等于toArray().
entries()
find(iterator)
instance conforming to Function(value, 等于 detect(). index) iterator: a function object 集合中每个元素调用 Iterator,返回一个由所有调用 instance conforming to Function(value, Iterator 返回结果等于 true 的元素组成的数组。和 reject()
相反。
findAll(iterator)
grep(pattern [, iterator])
instance
index) pattern: a RegExp object used to match the elements, iterator: a function object conforming to Function(value, index)
用 pattern 参数正则表达式测试集合中的每个元素,返回 一个包含所有匹配正则式的元素的 Array,如果给出了 Iterator,那个每个结果还要经过一下 Iterator 处理。
include(obj)
inject(initialValue, iterator)
invoke(methodName [, arg1 [, arg2 [...]]])
instance obj: any object initialValue: any object to be used as the initial value, iterator: a function object instance conforming to Function(accumulator, value, index) methodName: name of the method that will be called in instance each element, arg1..argN:
判断集合中包不包含指定对象。
用 Iterator 联接所有集合中的元素。Iterator 在被调用时 把上一次迭代的结果做为第一个参数传给 accumulator。第 一次迭代时,accurmelator 等于 initialValue,最后返回 accumulator 的值。
集合中的每个元素调用指定的函数(查看源代码可以发现指 定函数被调用时,this 指针被传成当前元素),并传入给出
map(iterator)
max([iterator])
arguments that will be passed in 的参数,返回调用结果组成的 Array。 the method invocation. iterator: a function object instance conforming to Function(value, 同collect(). index) iterator: a function object 返回集合中元素的最大值,或调用 Iterator 后返回值的最大 instance conforming to Function(value, 值(如果给出了 Iterator 的话)。 index)
instance obj: any object iterator: a function object 同 include(). member(obj)
min([iterator])
instance conforming to Function(value, 返回最小值,参见 max()。 index) iterator: a function object 返回一个包含两个 Array 的 Array,第一个 Array 包含所有 instance conforming to Function(value, 调用 Iterator 返回 True 的元素,第二个 Array 包含剩下的
元素。如果 Iterator 没有给出,那么就根据元素本身判断。
partition([iterator])
pluck(propertyName) instance
reject(iterator) instance
index) propertyName name of the property that will be read from each element. This can also contain the index of the element iterator: a function object conforming to Function(value,
返回每个元素的指定属性名的属性的值组成的 Array。
和 findAll()相反(返回所有等于false的元素).
select(iterator)
sortBy(iterator)
toArray()
index) iterator: a function object instance conforming to Function(value, 同 findAll(). index) iterator: a function object instance conforming to Function(value, index) instance (none)
根据每个元素调用 Iterator 返回的值进行排序返回一个 Array。
zip(collection1[, collection2 [, ... collectionN [,transform]]])
collection1 .. collectionN: enumerations that will be
返回由集合所有元素组成的一个 Array。 合并每个给出的集合到当前集合。合并操作返回一个新的 array,这个 array 的元素个数和原集合的元素个数一样, 这个 array 的每个元素又是一个子 array,它合并了所有集
instance merged, transform: a function 合中相同 index 的元素。如果 transform 函数被指定,那
object conforming to Function(value, index)
么 array 的每个元素还会调用 transform 函数先做处理。 举个例子: [1,2,3].zip([4,5,6], [7,8,9]).inspect() 返回 "[ [1,4,7],[2,5,8],[3,6,9] ]"
The Hash object
Hash 对象实现一种 Hash 结构,也就是一个 Key:Value 对的集合。
Hash 中的每个 Item 是一个有两个元素的 array,前一个是 Key,后一个是 Value,每个 Item 也有两个不需加以说明的属性,key 和 value。
Method keys() values()
Kind Arguments
instance (none) instance (none) otherHash: Hash
Description 返回所有 Item 的 key 的集合的一个 array。 返回所有 Item 的 value 的集合的一个 array。
merge(otherHash) instance 合并给出的 Hash,返回一个新 Hash。
object
toQueryString() instance (none)
inspect() instance (none)
以QueryString那样的样式返回hash中所有的item,例如: 'key1=value1&key2=value2&key3=value3' 用一种合适的方法显示 hash 中的 key:value 对。
The ObjectRange class
继承自 Enumerable
用上、下边界描述一个对象区域。
Property start end Type (any) (any)
Kind Description
instance range 的下边界 instance range 的上边界
exclusive Boolean instance 决定边界自身是不是 range 的一部分。
Method Kind Arguments Description
[ctor](start, end, exclusive)
start: the lower bound, end: the upper 创建一个 range 对象,从 start 生成到 end,这 constructor bound, exclusive: include the bounds in 里要注意的是,start 和 end 必段类型一致,而
且该类型要有 succ()方法。
include(searchedValue) instance
the range? searchedValue: value that we are looking for
检查一个 value 是不是在 range 中。
The Class object
在这个程序包中 Class 对象在声明其他的类时候被用到 。用这个对象声明类使得新类支持 initialize() 方法,他起构造方法的作用。
看下面的例子
//declaring the class var MySampleClass = Class.create();
//defining the rest of the class implmentation MySampleClass.prototype = {
initialize: function(message) { this.message = message; },
showMessage: function(ajaxResponse) { alert(this.message); }
};
//now, let's instantiate and use one object var myTalker = new MySampleClass('hi there.'); myTalker.showMessage(); //displays alert
Method Kind Arguments
create(*) instance (any)
Description 定义新类的构造方法。
The Ajax object
这个对象被用作其他提供 AJAX 功能的类的根对象。
Property Type Kind Description
activeRequestCount Number instance 正在处理中的 Ajax 请求的个数。
Method Kind Arguments getTransport() instance (none) Description 返回新的XMLHttpRequest 对象。
The Ajax.Responders object
继承自 Enumerable
这个对象维持一个在 Ajax 相关事件发生时将被调用的对象的列表。比如,你要设置一个全局钩子来处理 Ajax 操作异常,那么你就可以使用这个对象。
Property Type Kind Description
responders Array instance 被注册到 Ajax 事件通知的对象列表。
Method Kind Arguments
Description 被传入参数的对象应包含名如 Ajax 事件的系列方法
register(responderToAdd) instance
unregister(responderToRemove) instance
responderToAdd: object with (如 onCreate,onComplete,onException)。通讯 methods that will be called. 事件引发所有被注册的对象的合适名称的函数被调 用。 responderToRemove: object 从列表中移除。 to be removed from the list. callback: name of the AJAX 遍历被注册的对象列表,找出有由 callback 参数决定
dispatch(callback, request, transport, json)
instance event being reported, request: the Ajax.Request 的那个函数的对象。然后向这些函数传递其它的三个 参数,如果 Ajax 响应中包含一个含有 JSON 内容的
object responsible for the event, transport: the X-JSON HTTP头,那么它会被热行并传入json参数。 如果事件是 onException,那么 transport 参数会被
XMLHttpRequest object that 异常代替,json 不会传递。 carried (or is carrying) the AJAX call, json: the X-JSON header of the response (if present)
The Ajax.Base class
这个类是其他在 Ajax 对象中定义的类的基类。
Method Kind Arguments Description
setOptions(options) instance options: AJAX options 设定 AJAX 操作想要的选项。
responseIsSuccess() instance (none) responseIsFailure() instance (none) 返回 true 如果AJAX操作成功,否则为 false 。 与 responseIsSuccess() 相反。
The Ajax.Request class
继承自 Ajax.Base
封装 AJAX 操作
Property Type Kind
Description 在AJAX操作中所有可能报告的事件/状态的列表。这个列表包括: 'Uninitialized',
'Loading', 'Loaded', 'Interactive', 和 'Complete'。
transport XMLHttpRequest instance 承载AJAX操作的 XMLHttpRequest 对象。 url string instance 请求的 URL。
Events Array static
Method Kind Arguments
Description 创建这个对象的一个实例,它将在给定的选项下请求url。
[ctor](url, options)
url: the url to be onCreate事件在调用constructor事被激发。 重要: 如果 constructor fetched, options: 选择的url受到浏览器的安全设置,他会一点作用也不起。 很
AJAX options
多情况下,浏览器不会请求与当前页面不同主机(域名)的url。 你最好只使用本地url来避免限制用户配置他们的浏览器(谢
evalJSON() instance (none)
evalReponse() instance (none)
header(name) instance
name: HTTP header name
onStateChange() instance (none)
谢Clay) 这个方法显然不会被外部调用。它在 Ajax 响应中含有 X-JSON HTTP 头时用于内部调用执行这些内容。 这也方法显然不会被外部调用,如果 Ajax 响应含有一个值为 text/javascript 的 Cotent-Type 头,那么这个方法就用被 调用执行响应体。 引用 Ajax 响应的头的内容,在 Ajax 访问结束后再调用这个 方法。 这个方法通常不会被外部调用。 当 AJAX 请求状态改变的时 候被这个对象自己调用。
request(url) instance
respondToReadyState(readyState) instance
url: url for the AJAX call readyState: state number (1 to 4)
这个方法通常不会被外部调用。已经在构造方法中调用了。
这个方法通常不会被外部调用。 当 AJAX 请求状态改变的时 候被这个对象自己调用。
setRequestHeaders() instance (none)
这个方法通常不会被外部调用。 被这个对象自己调用来配置 在 HTTP 请求要发送的 HTTP 报头。
The options argument object
An important part of the AJAX operations is the options argument. There's no options class per se. Any object can be passed, as long as it has the expected properties. It is common to create anonymous objects just for the AJAX calls.
Property method parameters asynchronous postBody Type
String String Boolean String
Default 'post' '' true Description HTTP 请求方式。 在 HTTP 请求中传入的 url 格式的值列表。 指定是否做异步 AJAX 请求。
requestHeaders Array
undefined 在 HTTP POST 的情况下,传入请求体中的内容。 和请求一起被传入的HTTP头部列表, 这个列表必须含有偶数个项目, 任何奇数项目是自定义的头部的名称, 接下来的偶数项目使这个头部 undefined 项目的字符串值。 例子:['my-header1', 'this is the
value', 'my-other-header', 'another value']
onXXXXXXXX
Function(XMLHttpRequest, Object)
onSuccess
Function(XMLHttpRequest, Object)
onFailure
Function(XMLHttpRequest, Object)
onException
Function(Ajax.Request, exception)
insertion an Insertion class
在AJAX请求中,当相应的事件/状态形成的时候调用的自定义方法。 例 如 var myOpts = {onComplete: showResponse, undefined onLoaded: registerLoaded};. 这个方法将被传入一个参数, 这个参数是承载AJAX操作的 XMLHttpRequest 对象,另一个是包 含被执行X-JSON响应HTTP头。 当AJAX请求成功完成的时候调用的自定义方法。 这个方法将被传入一 undefined 个参数, 这个参数是承载AJAX操作的 XMLHttpRequest 对象,另 一个是包含被执行X-JSON响应HTTP头。 当AJAX请求完成但出现错误的时候调用的自定义方法。这个方法将被 undefined 传入一个参数,这个参数是承载AJAX操作的 XMLHttpRequest 对 象,另一个是包含被执行X-JSON响应HTTP头。 当一个在客户端执行的 Ajax 发生像无效响应或无效参数这样的异常情 undefined 况时被调用的自定义函数。它收到两个参数,包含异常 Ajax 操作的 Ajax.Request 对象和异常对象。 一个能决定怎么样插入新内容的类,能 Insertion.Before, undefined Insertion.Top, Insertion.Bottom, 或 Insertion.After. 只能应用 于Ajax.Updater 对象. undefined, 决定当响应到达的时候是否执行其中的脚本块,只在 false Ajax.Updater 对象中应用。 决定当最后一次响应和前一次响应相同时在
Ajax.PeriodicalUpdater 对象中的减漫访问的次数, 例如,
如果设为 2,后来的刷新和之前的结果一样, 这个对象将等待 2 个设 定的时间间隔进行下一次刷新, 如果又一次一样, 那么将等待 4 次, 等等。 不设定这个只,或者设置为 1,将避免访问频率变慢。 undefined, 用秒表示的刷新间的间隔,只能应用于 Ajax.PeriodicalUpdater 对 2 象。
evalScripts Boolean
decay Number
undefined, 1
frequency Number
The Ajax.Updater class
继承自 Ajax.Request
当请求的url返回一段HTML而你想把它直接放置到页面中一个特定的元素的时候被用到。 如果url的返回
时候也可以使用该对象。含有脚本的时候使用 evalScripts 选项。
将把 HTML 变为
Hello, Chief Wiggum. How's it going?
The Insertion.Top class
继承自 Abstract.Insertion
在给定元素第一个子节点位置插入 HTML。内容将位于元素的开始标记的紧后面。
Method [ctor](element, content)
Kind Arguments Description
element: element object or id, content: 继承自 Abstract.Insertion. 创建一个可以帮助插 HTML to be inserted 入动态内容的对象。
constructor
下面的代码
Hello, Wiggum. How's it going?
将把 HTML 变为
Hello, Mr. Wiggum. How's it going?
The Insertion.Bottom class
Inherits from Abstract.Insertion
在给定元素最后一个子节点位置插入 HTML。内容将位于元素的结束标记的紧前面。
Method [ctor](element, content)
Kind Arguments Description
element: element object or id, Inherited from Abstract.Insertion. Creates an object content: HTML to be inserted that will help with dynamic content insertion.
constructor
The following code
Hello, Wiggum. How's it going?
Will change the HTML to
Hello, Wiggum. How's it going? What's up?
The Insertion.After class
Inherits from Abstract.Insertion
在给定元素结束标记的后面插入 HTML。
Method [ctor](element, content)
Kind Arguments Description
element: element object or id, Inherited from Abstract.Insertion. Creates an object content: HTML to be inserted that will help with dynamic content insertion.
constructor
The following code
Hello, Wiggum. How's it going?
Will change the HTML to
Hello, Wiggum. How's it going? Are you there?
The Field object
这个对象提供操作表单中的输入项目的功能性方法。
Method Kind
clear(field1 [, field2 [, field3 [...]]]) instance
present(field1 [, field2 [, field3 [...]]]) focus(field) select(field)
instance
Arguments fieldN: field element object or id fieldN: field element object or id
Description
清除传入表单中项目元素的值。
只有在所有的表单项目都不为空时返回 true 。
activate(field)
instance field: field element object or id 移动焦点到给定的表单项目。 instance field: field element object or id 选择支持项目值选择的表单项目的值。 移动焦点并且选择支持项目值选择的表单项目的 instance field: field element object or id 值。
The Form object
这个对象提供操作表单和他们的输入元素的功能性方法。
Method Kind
Arguments form: form Description
返回url参数格式的项目名和值的列表, 如 instance element object or id form: form instance element object or 返回 Form 中第一个 Enable 的对象。 id form: form instance element object or 返回包含所有在表单中输入项目的 Array 对象。 id
'field1=value1&field2=value2&field3=value3'。 serialize(form)
findFirstElement(form)
getElements(form)
getInputs(form [, typeName [, name]])
disable(form)
form: form element object or id, typeName: the instance type of the input element, name: the name of the input element. form: form instance element object or 使表单中的所有输入项目无效。 返回一个 Array 包含所有在表单中的 元素。 另外, 这 个列表可以对元素的类型或名字属性进行过滤。 id form: form instance element object or 使表单中的所有输入项目有效。 id form: form
enable(form)
focusFirstElement(form) instance element object or 激活第一个表单中可视的,有效的输入项目。 id form: form
reset(form)
instance element object or 重置表单。和调用表单对象的 reset() 方法一样。 id
The Form.Element object
这个对象提供表单对象中的可视和非可视元素的功能性方法。
Method Kind Arguments Description
element: element object or 返回元素的 名称=值 对, 如
id element: element object or id
'elementName=elementValue'。 serialize(element) instance
getValue(element) instance 返回元素的值。
The Form.Element.Serializers object
这个对象提供了内部使用的用来协助解析出表单元素的当前值的一些有用的方法。
Method Kind
inputSelector(element) instance
Arguments element: object or id of a form element that has the checked property, like a radio button or checkbox. element: object or id of a form
Description
返回带有元素名称和值的 Array , 如
['elementName', 'elementValue']
element that has the value property, 返回带有元素名称和值的 Array , 如
like a textbox, button or password field. ['elementName', 'elementValue']
textarea(element) instance
select(element)
返回带有元素名称和所有被选择的选项的值或文本的 instance element: object of a
发布:yaosansi | 分类:JavaScript | 评论:2 | 引用:0 | 浏览:
| TrackBack引用地址
- 相关文章:
prototype.js开发笔记 (2006-3-31 9:1:9)
发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。





