prototype的Ajax介绍.docVIP

  • 1
  • 0
  • 约4.45千字
  • 约 6页
  • 2017-08-21 发布于河南
  • 举报
prototype的Ajax介绍

prototype的Ajax介绍 原文:/learn/introduction-to-ajax Prototype框架提供了非常容易和有意思的方法处理Ajax的调用,同时它也是浏览器安全的 。除了简单的请求外,这个模块(指prototype里的Ajax)也能很聪明的处理从服务器返回 的javascript代码,并且提供了一个辅助的类不停的轮循。 Ajax的功能包含在了全局的Ajax对象里面。用于Ajax请求的transport是xmlHttpRequest,它是从用户角度的对不同浏览器进行安全的抽象的结果。真正的请求是通过创建Ajax. Request对象的实例实现的。 new Ajax.Request(/some_url, { method:get } ); 第一个参数是请求的地址,第二个是可选的哈希值。方法选项指定要使用的HTTP请求方法,默认是POST。 记住,由于安全的原因(也就是防止跨站脚本攻击)Ajax请求只能被用在与包含这个Ajax请求页面相同的协议、主机与端口上。有些浏览器会允许任意的URL,但是你能不依靠这个。 Ajax响应回调 Ajax请求默认是异步的,这也就意味着你必须要有回调函数能够处理返回的数据。回调方法在发起请求的时候传给可选的哈希。new Ajax.Request(/some_url, { method: get, onSuccess: function(transport){ var response = transport.responseText || no response text; alert(Success! \n\n + response); }, onFailure: function(){ alert(Something went wrong...) } }); 这里两个回调函数传给了这个哈希值,分别表示成功与失败的警告。onSuccess和 onFailure根据返回的状态相应的被调用。第一个参数是原生的xmlHttpRequest对象,可以分别使用它的responseText和responseXML属性。 你可以把两个回调都定义,也可以是一个或者没有,这全由你来定。其它的可以用的回调函数还有: onUninitialized, onLoading, onLoaded, onInteractive, onComplete and onException. 他们都与xmlHttpRequest的传输的某一个状态有关系,除了在分发其它回调时出现异常后引起的onException外。 还有可以得到的就是onXXX的回调。这里XXX是HTTP的返回状态,象200或者404。需要注意的是,如果用这种方法,你的onSuccess和onFailure就不会被调用了。因为onXXX有更高的优先级,因为这样做的话,表示你知道你在做什么。 而onUninitialized、onLoading、 onLoaded和onInteractive这些回调函数并没有完全的被所有的浏览器实现出来。通过我们避免使用它们。 参数与HTTP方法 你可以将请求参数象一个参数属性一样传递。new Ajax.Request(/some_url, { method: get, parameters: {company: example, limit: 12} });那么参数会以company=examplelimit=12的形式发出。 你可以使用GET/POST中的任一种。但是需要注意的是GET的请求不应该导到致数据发生变化。浏览器很少会缓存POST请求,但是它往往会缓存GET请求。 参数属性的一个重要的应用是用Ajax请求发送一个的内容,Prototype已经给了你一个帮助的方法,叫做Form.serialize: new Ajax.Request(/some_url, { parameters: $(id_of_form_element).serialize(true) }); 如果你需要发送自定义的HTTP请求头,你可以用requestHeaders项来实现。只要作为一个哈希或者用一个扁平的数组传入名字—值对就可以了。如: [X-Custom-1, value, X-Custom-2, other value]. 如果由于某种原因,你必须自定义一个POST体(参数来自于参数项)的请求,有一个postBody项就是为了这个目的设的。要注意的时,如果你使用postBody,那么你传进来的所有的参数都不会被发送,因为postBody有更高的优先级。这

文档评论(0)

1亿VIP精品文档

相关文档