12.3 Prototype对Ajax的支持
Prototype为Ajax开发提供了有力的支持,其中主要包括Ajax.Request、Ajax.Response。下面将对这两个核心支持进行讲解。
(1)Ajax.Request
Prototype是Ajax的核心,用于发送Ajax请求的相关操作,其原型为new Ajax.Request(url [ , options ] ),通用属性options如表12-6所示。
表12-6 Prototype对Ajax通用属性options的说明
属性名称
说明
asynchronous
是否异步,默认为true
contentType
传递数据的编码格式,默认为application
/x-www-form-urlencoded
encoding
申请数据的编码,默认为UTF-8
evalJS
如果返回为JS格式,是否自动执
行JS代码,默认为true
续表
属性名称
说明
evalJSON
返回JSON对象,并把对象保存在response
对象的responseJSON属性中,返回的JSON文
件类型为application/json,默认为true
method
Get Post方式设定,默认为post
parameters
申请时传递的参数,可以为Hash或者url_encoded
字符串,如果是Hash,就调用Hash对象的
toQueryString()方法,转成相应的字符串
postBody
请求时传递的数据
requestHeaders
请求时的头信息,***传递Hash形式的参数,
默认参数如下所示。
qX-Requested-With:XMLHttpRequest
qX-Prototype-Version:当前使用的
qPrototype版本(如1.6.0)
qAccept:text/javascript、text/html、
qapplication/xml、text/xml、and */*
同时Ajax提出请求后,会在一定情况下触发一些事件或者称为回调函数,如表12-7所示。
表12-7 Ajax.Request相关事件说明
事件名称
说明
onCreate
对象被创建,请求准备好发送
onUninitialized
创建时触发
onLoading
初始化时触发
onLoaded
请求发送时触发
onInteractive
响应收到时触发
onFailure
接收到服务器响应,但HTTP状态码显示回应不正确
onSuccess
接收到服务器响应,但HTTP状态码显示正确200~299
onXYZ
对接收到的特殊HTTP状态码进行回应
onComplete
服务器接收完毕后触发,通常在onFailure、
onSuccess、onXYZ 3个回调函数之后被触发
onException
可以在请求的任何生命环节发生,如果发生一
些错误,会激发该回调,第二个参数是exception对象
(2)Ajax.Response
Request的相关回调除onException外***个参数都是Response对象。Response对象包含了Ajax返回对象,Response对象包括如表12-8所示属性。
表12-8 Ajax.Response相关属性说明
属性名称
说明
status
返回的HTTP状态码
statusText
与status一起的状态文本,如果没有便为""
readyState
请求的当前状态。0为"Uninitialized",1为
"Loading",2为"Loaded",3为"Interactive"、
4为"Complete"
responseText
返回的文本
responseXML
返回的XML
续表
属性名称
说明
responseJSON
返回的JSON
headerJSON
Prototype 1.6的一个新属性,包含对返回
对象中X-JSON头信息的执行。如果返回
没有X-JSON头信息,则返回null
request
请求对象本身
transport
本地XMLHttpRequest对象本身,通常
不使用,只是为了保证兼容性
Response对象还包含如表12-9所示的方法。
表12-9 Ajax.Response相关方法说明
方法名称
说明
getAllHeaders( )
返回相应的所有头信息,出现异常时返回null
getAllResponseHeaders( )
返回一个字符串包含所有标题隔开、
换行符。通常使用getAllHeaders
getHeader(name)
返回相应的头信息,出现异常时返回null
getResponseHeader(name)
返回相应的头信息,出现异常时返回
null。通常使用getHeader
除了Ajax.Request、Ajax.Response两个核心支持外,还提供了用来根据返回的XHTML代码更新相应容器内容的Ajax.Updater类、用来定时发起请求的Ajax. PeriodicalUpdater类、用于维护正在运行的Ajax对象列表的Ajax.Responders。在此这些类不再一一详解,在后续章节中使用时再进行讲解。
Prototype对于Ajax的支持将通过12.4节的重建电子相册进行代码演示。
点赞 0