`
sngg_yang
  • 浏览: 32314 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

Prototype 使用 Ajax.Request类

阅读更多

这是一篇转贴文章,自已很早就在用prototype了,这个博客很多的地方就使用了这个轻型框架,如果将jqueryprototype结合起来用,一定要记得先好好了解jquery,因为他改写某些prototype的方法.

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

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

假如你有一个应用程序可以通过url 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://yoursever/app/get_sales';
        var pars = 'empID=' + empID + '&year=' + y;
       var myAjax = new Ajax.Request(
                    url,
                    {method: 'get', parameters: pars, onComplete: showResponse}
                    );

    }

    function showResponse(originalRequest)
    {
        //put returned XML in the 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,可以为truefalse 来决定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。

更完全的解释,请参照 Ajax.Request 参考Ajax选项参考

<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="http://www.lvjiyong.com/item/jquery-with-prototype-using-ajax" dc:identifer="http://www.lvjiyong.com/item/jquery-with-prototype-using-ajax" dc:title="Prototype 使用 Ajax.Request类" trackback:ping="http://www.lvjiyong.com/trackback/jquery-with-prototype-using-ajax" /> </rdf:RDF> -->
分享到:
评论

相关推荐

    ajax.request和ajax.periodicalupdate用法讲解

    本文将详细讲解Prototype库中的两个关键Ajax方法:`Ajax.Request`和`Ajax.PeriodicalUpdater`。 ### 1. Ajax.Request `Ajax.Request`是Prototype库中最基础的Ajax请求方法,它允许开发者发起HTTP请求与服务器进行...

    prototype.js开发笔记--让你精通prototype开发

    1.4.1. 使用 Ajax.Request类 1.4.2. 使用 Ajax.Updater 类 2. prototype.js参考 2.1. JavaScript 类的扩展 2.2. 对 Object 类的扩展 2.3. 对 Number 类的扩展 2.4. 对 Function 类的扩展 2.5. 对 String 类的扩展 ...

    prototype-1.6.0.3.js+prototype1.4 、1.5中文手册+prototype1.6英文手册

    Prototype通过`Ajax`类封装了这一技术,包括`Ajax.Request`、`Ajax.Updater`和`Ajax.PeriodicalUpdater`等方法,使得创建异步请求变得简单直观。 总结来说,这个压缩包是学习和使用Prototype JavaScript库的宝贵...

    prototype_1.7.3.js 最新版本

    `Ajax.Request`和`Ajax.Updater`是其中两个关键的类,它们分别用于发起完整的HTTP请求和替换页面的部分内容。 Prototype.js的另一个显著特点是对JavaScript对象的增强。1.7.3版本继续沿用了基于类的模拟实现,通过`...

    prototype的Ajax介绍

    **Ajax.Request** 是Prototype中用于创建Ajax请求的核心对象。可以通过以下方式初始化: ```javascript new Ajax.Request('/some_url', { method: 'get' }); ``` - **参数解析**: - 第一个参数:请求的URL。 -...

    prototype-AJAX案例

    在JavaScript的世界里,Prototype是一个非常著名的库,它扩展了JavaScript的基本对象,并且提供了一系列实用的函数,使得开发者在处理DOM操作、AJAX交互等方面的工作变得更加简单。本案例将重点探讨如何利用...

    经典ajax.prototype.javascript实例

    一旦Prototype库被加载,我们就可以利用其强大的Ajax类来创建异步请求。在Prototype中,`Ajax`对象提供了多种方法,如`Request`、`Observer`、`Updater`等,它们使得发送Ajax请求变得非常简单。其中,`Ajax.Request`...

    使用prototype简化Ajax操作

    在"使用prototype简化Ajax操作"这个主题中,我们将深入探讨Prototype库如何使Ajax变得更加简单易用。 首先,Prototype为Ajax操作提供了一个统一的接口——`Ajax`对象。这个对象下包含了一系列方法,如`Request`、`...

    Ajax(Ajax,jquery,prototype综合).rar

    7. **Prototype的Ajax**:Prototype库提供了一个强大的Ajax模块,包括`Ajax.Request`用于发起请求,`Ajax.Updater`用于更新页面内容。它还提供了一些便利的选项和事件处理,使开发更加灵活。 8. **应用场景**:Ajax...

    《Prototype and script.aculo.us终极揭秘》

    3. **Ajax**:Prototype的`Ajax`模块简化了与服务器端的异步通信,提供了`Ajax.Request`和`Ajax.Updater`等方法,用于发送HTTP请求并处理响应。 4. **事件处理**:Prototype改进了JavaScript的事件处理机制,允许更...

    prototype.js开发笔记.pdf

    1.4.1.使用Ajax.Request类 Ajax.Request类用于发送Ajax请求。 1.4.2.使用Ajax.Updater类 Ajax.Updater类用于更新页面中的某个元素。 二、Prototype.js参考 Prototype.js提供了许多有用的函数和方法,以帮助...

    Prototype 1.6.0.3 中文参考手册

    在Ajax方面,Prototype提供了`Ajax`模块,其中包含了`Ajax.Request`和`Ajax.Updater`等关键类。`Ajax.Request`用于发起HTTP请求,接受URL和选项作为参数,可以处理异步数据交换,如GET和POST请求。`Ajax.Updater`则...

    也写一个Ajax.Request类附代码

    总结来说,这个Ajax.Request类实现了基本的Ajax通信功能,它轻量化且易于集成到现有项目中,特别是那些基于Prototype.js但只需其Ajax部分的项目。通过这个类,开发者可以发起HTTP请求,处理服务器响应,而无需加载...

    js框架prototype-1.6.0.3.js

    开发者可以使用`Ajax.Request`或`Ajax.Updater`发起HTTP请求,处理JSON、XML等多种数据格式。这些方法提供了回调函数,方便在请求成功或失败时执行相应的操作。 Prototype的`Scriptaculous`库是与之配套的一个效果...

    prototype-1.6.0.2.js.rar

    Prototype的Ajax模块提供了一系列实用的类和方法,如`new Ajax.Request(url, options)`用于发起HTTP请求,`new Ajax.Updater(container, url, options)`用于更新指定容器的内容。这些方法支持异步通信,使页面能够在...

    Prototype-1.pdf

    4. **编写代码**:利用Prototype提供的API来实现所需的功能,例如使用`Ajax.Request`发起Ajax请求。 #### 五、Prototype框架的应用案例 - **动态加载数据**:使用`Ajax.Updater`组件动态加载新闻列表、用户评论等...

    prototype.js.cn.doc.rar

    `Ajax.Request`和`Ajax.Updater`类用于发送HTTP请求,处理响应数据,实现了页面局部更新。 2. **Selectors API**:Prototype.js兼容了CSS选择器,提供了`$$()`函数,可以像操作CSS一样选取DOM元素,增强了...

    prototype-1.6.0.3

    6. **Ajax 支持**:Prototype 强化了Ajax功能,包括 XMLHttpRequest 对象的封装,如 Ajax.Request 和 Ajax.Updater 等,使得异步请求处理更加直观。 7. **Event 模块**:提供了一套事件处理机制,如 Event.observe ...

    prototype_Ajax

    在 `Ajax.Request.prototype` 中,`initialize` 方法用于初始化请求,包括打开连接、设置请求头以及定义状态改变时的回调函数。`onStateChange` 方法是一个内部回调,当 `XMLHttpRequest` 的状态发生变化时会被调用...

Global site tag (gtag.js) - Google Analytics