`
geeksun
  • 浏览: 965013 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用 Ajax.Request 类 详解

阅读更多

使用 Ajax.Request 类 ,其实这个JS类不是系统自带的,而是网上的高人写的通用的JS类库,被广泛的使用,这个JS类为:prototype.js,下载:prototype.rar ,开发手册下载:prototype.js开发手册.rar

--------------------------------------------------------------------------------

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

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

假如你有一个应用程序可以通过 http://yoursever/app/getsales?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>
 

 

分享到:
评论

相关推荐

    ExtJS之Ext.Ajax.request用法详解.docx

    ExtJS之Ext.Ajax.request用法详解.docx

    ExtJS之Ext.Ajax.request用法详解.pdf

    ExtJS之Ext.Ajax.request用法详解.pdf

    ExtJS之Ext.Ajax.request用法详解 (2).docx

    ExtJS之Ext.Ajax.request用法详解 (2).docx

    ExtJS之Ext.Ajax.request用法详解 (2).pdf

    ExtJS之Ext.Ajax.request用法详解 (2).pdf

    Ajax.Request

    ### Ajax.Request知识点详解 #### 一、Ajax.Request简介 在现代Web开发中,异步JavaScript与XML(简称AJAX)技术被广泛应用于构建交互式的网页应用。为了支持这种功能,许多框架都提供了辅助类来简化AJAX请求的...

    微信小程序wx.request拦截器使用详解

    而微信小程序中的wx.request方法是用于发起网络请求的,类似于原生JS中的XMLHttpRequest对象和jQuery的$.ajax方法。 在微信小程序的开发中,wx.request的拦截器是一种非常有用的机制。拦截器的作用是在发送请求之前...

    prototype的Ajax介绍

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

    微信小程序 wx.request(接口调用方式)详解及实例

    对于`jQuery.ajax`,即使使用相同的`content-type`,它也会自动转换请求数据为`&name1=value1&name2=value2`的形式,与`wx.request`不同。 3. HTTPS与安全问题 微信小程序只支持HTTPS请求,本地开发时可暂时使用...

    AJAX.Rich.Internet.Applications.and.Web.Development.for.Programmers.

    **AJAX技术详解** AJAX是一种Web开发技术,允许在不刷新整个页面的情况下更新网页部分内容,从而提供更流畅、响应更快的用户体验。其核心组件包括: 1. **JavaScript**: 客户端脚本语言,用于创建异步请求并与...

    ExtJS对Ajax的支持

    ##### 1.1 Ext.Ajax.request方法详解 `Ext.Ajax.request`方法是Ext.Ajax中最常用的功能,它允许开发者以配置参数的形式发送异步请求。这种方法简化了Ajax请求的过程,开发者只需提供请求URL、请求类型(默认为GET)...

    对Django 中request.get和request.post的区别详解

    如果需要获取同一个键对应的所有值(例如一键多值情况),可以使用`request.GET.getlist('key')`方法。 相较之下,POST方法主要用于向服务器提交数据进行处理,如表单提交,其数据不是附加在URL上,而是作为HTTP...

    ajax:prototype.js很全的手册

    3. **Ajax**:解释`Ajax.Request`和`Ajax.Updater`的用法,以及如何处理响应和错误,还可能涉及`Ajax.PeriodicalUpdater`用于定期更新内容的类。 4. **事件**:阐述事件监听、触发和阻止冒泡的方法,以及如何处理跨...

    ajax中各种框架的应用和详解

    - **Ajax功能**:Prototype提供了`Ajax.Request`和`Ajax.Updater`等类,用于发起和管理AJAX请求,更新页面内容。 - **函数和对象扩展**:Prototype支持函数和对象的扩展,例如`Function.prototype.bind()`和`Object....

    Ajax详解.rar

    第 14部分:面向 Java 开发人员的 Ajax 结合 Direct Web Remoting 使用 Ajax 154 1.1 DWR 是什么? 155 1.2 关于示例 155 1.3 实现目录 156 1.4 测试部署 157 1.5 调用远程对象 158 1.6 实现购物车 160 1.7 ...

    ExtJs选中var editor = new Ext.ux.grid.RowEditor详解

    Ext.Ajax.request({ url: "updateuser.aspx", params: { data: Ext.encode(record.data), // 将数据编码成字符串形式 id: record.id }, success: function() { alert(10); } }); grid.getView().refresh...

    extjs加载远程数据

    使用`Ext.Ajax.request`** ExtJS中的`Ext.Ajax.request`方法是执行Ajax请求的核心方法。它接受一个配置对象作为参数,可以通过不同的配置项来定制请求行为。 **2. `url`属性** `url`属性用于指定请求的目标URL。...

    Prototype对Ajax的支持

    - `Ajax.Request`:最基础的Ajax请求方式,可以用来发送任意类型的请求。 - `Ajax.Updater`:更新页面元素的Ajax请求方式,通常用于动态更新某个HTML元素的内容。 - `Ajax.PeriodicalUpdater`:周期性更新页面元素的...

    使用Ext2.0的Ajax连接ArcIMS例子

    ### 使用Ext2.0的Ajax连接ArcIMS的例子详解 #### 一、背景介绍 随着Web技术的发展,GIS(地理信息系统)的应用越来越广泛。在Web GIS领域中,ArcIMS(ArcGIS Image Server)作为一款高性能的图像服务器软件,在地图...

Global site tag (gtag.js) - Google Analytics