`

prototype.js 的 Ajax.updater 的 用法

    博客分类:
  • Ajax
阅读更多

    http://www.cnblogs.com/beyondGodLike/archive/2009/08/04/1538543.html
一、ajax.updater
方法有3个参数: ajax.updater(container, url, options)
分别表示 1.控件id;2.请求的url;3.具体如下(可选):

属性         类型   Default    描述

method Array 'post' HTTP 请求方式。get or post

parameters String '' 在HTTP请求中传入的url格式的值列表。

asynchronous Boolean true 指定是否做异步 AJAX 请求。

postBody String undefined 在HTTP POST的情况下,传入请求体中的内容。

requestHeaders Array undefined 和请求一起被传入的HTTP头部列表, 这个列表必须含有偶数个项目, 任何奇数项目是自定义的头部的名称, 接下来的偶数项目使这个头部项目的字符串值。 例子:['my-header1', 'this is the value', 'my-other-header', 'another value']

onXXXXXXXX Function(XMLHttpRequest) undefined 在AJAX请求中,当相应的事件/状态形成的时候调用的自定义方法。 例如 var myOpts = {onComplete: showResponse, onLoaded: registerLoaded};. 这个方法将被传入一个参数, 这个参数是携带AJAX操作的 XMLHttpRequest对象。

onSuccess Function(XMLHttpRequest) undefined 当AJAX请求成功完成的时候调用的自定义方法。 这个方法将被传入一个参数, 这个参数是携带AJAX操作的 XMLHttpRequest对象。

onFailure Function(XMLHttpRequest) undefined 当AJAX请求完成但出现错误的时候调用的自定义方法。 这个方法将被传入一个参数, 这个参数是携带AJAX操作的 XMLHttpRequest对象。

insertion Function(Object, String) null 为了把返回的文本注入到一个元素中而执行的方法。 这个方法将被传入两个参数,要被更新的对象并且只应用于 Ajax.Updater 的响应文本 。

evalScripts Boolean undefined, false 决定当响应到达的时候是否执行其中的脚本块,只在 Ajax.Updater 对象中应用。

decay Number undefined, 1 决定当最后一次响应和前一次响应相同时在
Ajax.PeriodicalUpdater 对象中的减漫访问的次数, 例如,如果设为2,后来的刷新和之前的结果一样, 这个对象将等待2个设定的时间间隔进行下一次刷新, 如果又一次一样, 那么将等待4次,等等。 不设定这个只,或者设置为1,将避免访问频率变慢。

function getContents()
{
var request_url = "test1.html";       // 需要获取内容的url
var request_pars = '';//请求参数

var myAjax = new Ajax.Updater('result', request_url,{ // 将request_url返回内容绑定到id为result的容器中
method     : 'get', //HTTP请求的方法,get or post
parameters : request_pars, //请求参数
onFailure  : reportError, //失败的时候调用 reportError 函数
onLoading  : loading, //正在获得内容的时候
onComplete : done     //内容获取完毕的时候
});
}

function loading()
{
$('loading').style.display = 'block';
}

function done()
{
$('loading').style.display = 'none';
}

function reportError(request)
{
alert('Sorry. There was an error.');
}


Ajax.Updater为我们提供加载文档时候的三种状态, onComplete,onLoading,onFailure.我们可以自定义一个函数分别相应这三种不同的状态。
下面的例子用到了success (一切OK的时候才被用到) ,和它同等地位的属性还有一个failure (有地方出问题的时候被用到) 这里没用到。出错时在 onFailure 处调用 reportError 方法。
复制代码
<script>
    function getHTML()
    {
        var url = 'http://yourserver/app/getSomeHTML';
        var pars = 'someParameter=ABC';
        var myAjax = new Ajax.Updater(
                    {success: 'placeholder'},
                    url,
                    {method: 'get', parameters: pars, onFailure: reportError});
    }
    function reportError(request)
    {
        alert('Sorry. There was an error.');
    }
</script>

<input type=button value=GetHtml onclick="getHTML()">
<div id="placeholder"></div>

二、使用 Ajax.Request 类 详解

使用 Ajax.Request 类 ,其实这个JS类不是系统自带的,而是网上的高人写的通用的JS类库,被广泛的使用,这个JS类为:prototype.js。
如果你不使用任何的帮助程序包,你很可能编写了整个大量的代码来创建 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>
分享到:
评论

相关推荐

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

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

    prototype.js的系列文章

    prototype.js的系列文章——$H()函数 百度的Ajax.js文件 常用JS prototype.js的系列文章——$R()函数 prototype.js的系列...prototype.js的系列文章——Ajax.Updater类 prototype.js的系列文章——Try.these())函数

    Ajax.updater

    Ajax.updater的使用返回xml,json, 直接返回页面

    SimpAutoUpdater c#自动升级模块源码

    使用 FSLib.App.SimpleUpdater.Updater.CheckUpdateSimple("升级网址") 的重载方法。这个重载方法允许你传入一个升级包的地址; 在检查前手动设置 FSLib.App.SimpleUpdater.Updater.UpdateUrl 属性。这是一个静态...

    Prototype学习笔记(最新整理)

    使用 Ajax.Updater 类 7 4. prototype.js参考 9 4.1. JavaScript 类的扩展 9 4.2. 对 Object 类的扩展 9 4.3. 对 Number 类的扩展 9 4.4. 对 Function 类的扩展 9 4.5. 对 String 类的扩展 10...

    UEFI BIOS Updater_v1.79.17

    UEFI BIOS Updater使用方法: 1、下载软件后解压到UBU文件夹。 2、将要处理的BIOS文件放在UBU文件夹下。bios文件最好重命名为bios.bin。 3、运行UBU.bat文件后,会自动搜索文件夹下的bios文件。 4、出现“请按任意键...

    prototype Ajax 深度解析

    作为一个Ajax开发框架,Prototype对 Ajax开发提供了有力的支持。在Prototype中,与Ajax... PeriodicalUpdater和Ajax.Updater,图2-3所示为这些类和对象之间的关系及其常用属性和方法,下面分别对这些类和对象进行介绍。

    SANGFOR_Updater6.2.rar

    深信服升级工具 6.2

    Android代码-AppUpdater版本更新、一键傻瓜式升级App

    &gt; app-updater app-dialog 配合使用,谁用谁知道。 功能介绍 [x] 专注于App更新一键傻瓜式升级 [x] 支持下载监听 [x] 支持下载失败,重新下载 [x] 支持通知栏提示内容和过程全部可配置 [x] 支持Android O Gif ...

    com.siyue.smartclient.updater_1.0.0.jar

    jar包,官方版本,自测可用

    找到了一篇jQuery与Prototype并存的冲突的解决方法

    知道了原因就想办法解决吧,总不至于让我脱离jquery重新写一遍吧,去网上狂搜了一番终于找到了一些解决办法,这就是: 1、将jquery.js放到prototype.js后面(这个是必须的否则无论如何还是要罢工地)。 2、在jquery....

    prototype与jquery下Ajax实现的差别

    先列举一下Ajax在Jquery和prototype中的实现。 Jquery: 代码如下: [removed] $(function(){ var box = {}; var remoteUrl = ‘index.php’; box.interval = 5*60*1000;//5分钟 box.showBoxInfo = function() { ...

    SANGFOR_Updater6.0.zip

    SANGFOR_Updater6.0深信服技术专用工具维护必备工具SANGFOR_Updater6.0

    Cert_Updater_v1.6.exe

    Cert_Updater_v1.6.exe Cert_Updater_v1.6.exe Cert_Updater_v1.6.exe

    Node.js-electron-simple-updater自动更新electron应用

    electron-simple-updater 自动更新electron应用

    Outbyte.Driver.Updater.2.1.10.642.rar

    Outbyte Driver Updater 2021是一个智能和新的工具,检测过期的驱动程序,并更新他们快速和容易。 获取驱动程序更新对用户来说一直是个麻烦。 过时的设备驱动程序在未更新时可能包含安全或稳定性问题——它们甚至...

    uefi_bios_updater_uefi_uefibiosupdater_uefi0060_fdbios编辑工具_ubu29

    uefi BIOS编辑工具 存量稀少 功能强大

    Syn3Updater

    Syn3Updater Syn3 Updater- //cyanlabs.net/applications/syn3-updater/

    Microsoft_AutoUpdate_4.21.20030802_Updater.pkg

    Provides latest MS Office updates to customers.Microsoft AutoUpdate allows you to keep your software up-to-date automatically.

    Ajax for Web Application Developers(Ajax网站开发)

    Creating an Ajax Updater Chapter 7. Using the Engine Getting Started Making a Request Engine Methods and Properties Chapter 8. Debugging The JavaScript onerror Event responseText IE ...

Global site tag (gtag.js) - Google Analytics