ajax prototype框架之Ajax.Request 类

使用 Ajax.Request 类



如果你不使用任何的帮助程序包,你很可能编写了整个大量的代码来创建 XMLHttpRequest 对象并且异步的跟踪它的进程,然后解析响应并处理它。当你不需要支持多于一种类型的浏览器时你会感到非常的幸运。

为了支持 AJAX 功能。这个包定义了 Ajax.Request 类。

假如你有一个应用程序可以通过http://yoursever/app/get_sales?empID=1234&year=1998 与服务器通信。它返回下面这样的 XML 响应:


<?xml version="1.0" encoding="utf-8" ?> <ajax-response>    <response type="object" id="productDetails">        <monthly-sales>            <employee-sales>                <employee-id>1234</employee-id>                 <year-month>1998-01</year-month>                 <sales>$8,115.36</sales>             </employee-sales>            <employee-sales>                <employee-id>1234</employee-id>                 <year-month>1998-02</year-month>                 <sales>$11,147.51</sales>             </employee-sales>        </monthly-sales>    </response></ajax-response>    

用 Ajax.Request 对象和服务器通信并且得到这段 XML 是非常简单的。下面的例子演示了它是如何完成的:


<script>...    function searchSales()    ...{        var empID = $F(''lstEmployees'');        var y = $F(''lstYears'');        var url = ''http://yourserver/app/get_sales'';        var pars = ''empID='' + empID + ''&year='' + y;                var myAjax = new Ajax.Request(            url,             ...{                method: ''get'',                 parameters: pars,                 onComplete: showResponse            });            }

    function showResponse(originalRequest)    ...{        // 将返回的 XML 放到 textarea 内        $(''result'').value = originalRequest.responseText;    }</script>

<select id="lstEmployees" size="10" onchange="searchSales()">    <option value="5">Buchanan, Steven</option>    <option value="8">Callahan, Laura</option>    <option value="1">Davolio, Nancy</option></select><select id="lstYears" size="3" onchange="searchSales()">    <option selected="selected" value="1996">1996</option>    <option value="1997">1997</option>    <option value="1998">1998</option></select><br><textarea id=result cols=60 rows=10 ></textarea>

你注意到传入 Ajax.Request 构造方法的第二个对象了吗?参数 {method: ''get'', parameters: pars, onComplete: showResponse} 表示一个匿名对象的真实写法。他表示你传入的这个对象有一个名为 method 值为 ''get'' 的属性,另一个属性名为 parameters 包含 HTTP 请求的查询字符串,和一个 onComplete 属性/方法包含函数 showResponse。

还有一些其它的属性可以在这个对象里面定义和设置,如 asynchronous,可以为 true 或 false 来决定 AJAX 对服务器的调用是否是异步的(默认值是 true)。

这个参数定义 AJAX 调用的选项。在我们的例子中,在第一个参数通过 HTTP GET 命令请求那个 url,传入了变量 pars 包含的查询字符串,Ajax.Request 对象在它完成接收响应的时候将调用 showResponse 方法。

也许你知道,XMLHttpRequest 在HTTP请求期间将报告进度情况。这个进度被描述为四个不同阶段:Loading, Loaded, Interactive, 或 Complete。你可以使 Ajax.Request 对象在任何阶段调用自定义方法 ,Complete 是最常用的一个。想调用自定义的方法只需要简单的在请求的选项参数中的名为 onXXXXX 属性/方法中提供自定义的方法对象。 就像我们例子中的 onComplete。你传入的方法将会被用一个参数调用,这个参数是 XMLHttpRequest 对象自己。你将会用这个对象去得到返回的数据并且或许检查包含有在这次调用中的HTTP 结果代码的 status 属性。

还有另外两个有用的选项用来处理结果。我们可以在 onSuccess 选项处传入一个方法,当 AJAX 无误的执行完后调用,相反的,也可以在 onFailure 选项处传入一个方法,当服务器端出现错误时调用。正如 onXXXXX 选项传入的方法一样,这两个在被调用的时候也传入一个带有 AJAX 请求的 XMLHttpRequest 对象。

我们的例子没有用任何有趣的方式处理这个 XML 响应, 我们只是把这段 XML 放进了一个文本域里面。对这个响应的一个典型的应用很可能就是找到其中的想要的信息,然后更新页面中的某些元素, 或者甚至可能做某些 XSLT 转换而在页面中产生一些 HTML。

在 1.4.0 版本中,一种新的事件回传外理被引入。如果你有一段代码总是要为一个特殊的事件执行,而不管是哪个 AJAX 调用引发它,那么你可以使用新的 Ajax.Responders 对象。

假设你想要在一个 AJAX 调用正在运行时,显示一些提示效果,像一个不断转动的图标之类的,你可以使用两个全局事件句柄来做到,其中一个在第一个调用开始时显示图标,另一个在最后一个调用完成时隐藏图标。看下面的例子。


<script>    var myGlobalHandlers = ...{        onCreate: function()...{            Element.show(''systemWorking'');        },

        onComplete: function() ...{            if(Ajax.activeRequestCount == 0)...{                Element.hide(''systemWorking'');            }        }    };

    Ajax.Responders.register(myGlobalHandlers);</script>

<div id=''systemWorking''><img src=''spinner.gif''>Loading...</div>

更完全的解释,请参阅 Ajax.Request 参考和options 参考。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ajax
, 服务器
, 对象
, xmlhttprequest
, 参数
属性
prototype request、prototype框架、prototype框架详解、prototype.js ajax、prototype ajax,以便于您获取更多的相关知识。

时间: 2024-11-08 21:38:53

ajax prototype框架之Ajax.Request 类的相关文章

【jQuery教程】基于JQuery框架的AJAX

前几天发了个贴,分享了prototype框架关于AJAX方面的学习过程.然后有人说jquery框架更方便. 正好项目中准备使用thickbox,于是干脆抛弃prototype.js,看起jquery.js了.JQuery确实不错,体积比 Prototype小了许多,而且使用起来更方便更灵活.有人说Prototype像JAVA,正统:而JQuery像Ruby,灵活,更趋于OOP. 小试了下AJAX,感觉比prototype简洁多了,在JQuery中,AJAX有三种实现方式:$.ajax(),$.p

不使用Ajax框架实现Ajax效果?

为了简单明了,我只在html中测试:注释里写的很清楚,我就不多废话了: 很多家公司在面试的时候可能会让你不使用任何Ajax的框架实现Ajax效果,虽然这段代码看上去挺痛苦,但也没有别的办法,记不记也得记(其实理解起来就没那么难记了--) readyState表示XMLHttpRequest对象的处理状态: 0:XMLHttpRequest对象还没有完成初始化. 1:XMLHttpRequest对象开始发送请求. 2:XMLHttpRequest对象的请求发送完成. 3:XMLHttpReques

利用ProtoType框架完成的一个下拉框(asp:DropDownList)联动的AJAX例子

ajax|下拉 最近终于有时间研究研究AJAX了.看了一些AJAX的介绍.用ProtoType框架完成的一个下拉框(asp:DropDownList)联动的AJAX的小例子,和初学者分享一下. 代码下载 <script language="javascript" type="text/javascript" ><!-- function goCity(){        var url = "AreaHandler.ashx";

利用ProtoType框架完成的一个下拉框(asp:DropDownList)联动的AJAX例子

最近终于有时间研究研究AJAX了.看了一些AJAX的介绍. 用ProtoType框架完成的一个下拉框(asp:DropDownList)联动的AJAX的小例子,和初学者分享一下. <script language="javascript" type="text/javascript" > <!-- function goCity() { var url = "AreaHandler.ashx"; var father= $F('

Ajax::prototype 源码解读_javascript技巧

AJAX之旅(1):由prototype_1.3.1进入javascript殿堂-类的初探  还是决定冠上ajax的头衔,毕竟很多人会用这个关键词搜索.虽然我认为这只是个炒作的概念,不过不得不承认ajax叫起来要方便多了.所以ajax的意思我就不详细解释了. 写这个教程的起因很简单:经过一段时间的ajax学习,有一些体会,并且越发认识到ajax技术的强大,所以决定记录下来,顺便也是对自己思路的整理.有关这个教程的后续,请关注http://www.x2design.net 前几年,javascri

AJAX技术框架及开发工具_AJAX相关

常见的AJAX框架有: DWR - Web Remoting Buffalo - Web Remoting (based on prototype) prototype - JS OO library openrico - JS UI component (based on prototype) dojo - JS library and UI component qooxdoo - JS UI component (C/S Style) YUL - JS UI component 其中关于DW

jquery框架是$.ajax()的使用方法简单说明

ajax() 方法通过 HTTP 请求加载远程数据. 该方法是 jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XMLHttpRequest 对象.大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性. 最简单的情况下,$.ajax() 可以不带任何参数直接使用. 注意:所有的选项都可以通过 $.ajaxSetup() 函数来全局设置 实例  代码如下 复制代码 $.ajax({ type:'p

Ajax 框架之SSM整合框架实现ajax校验

刚学习了ssm框架,ajax校验成功,分享下 1.导入jar包 2.配置spring-servlet.xml <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mapping

AJAX技术框架及开发工具

常见的AJAX框架有: DWR - Web Remoting Buffalo - Web Remoting (based on prototype) prototype - JS OO library openrico - JS UI component (based on prototype) dojo - JS library and UI component qooxdoo - JS UI component (C/S Style) YUL - JS UI component 其中关于DW