`
geeksun
  • 浏览: 954105 次
  • 性别: 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>
 

 

分享到:
评论

相关推荐

    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 ...

    Vue官方推荐AJAX组件axios.js使用方法详解与API

    Axios.js作为Vue官方插件的AJAX组件其主要有以下几个特点: 1、比Jquery轻量,但处理请求不多的时候,可以使用 2、基于Promise语法标准 3、支持nodejs 4、自动转换JSON数据 Axios.js用法 axios提供了一下几种请求...

    C#进阶系列--WebApi

    一、使用异常筛选器捕获所有异常 ..................................................................................................................................... 24 1、接口级别 .......................

    Servlet3.0与纯javascript通过Ajax交互的实例详解

    对于很多人来说应该很简单。不过还是写写,方便Ajax学习的后来者。 ... Eclipse for javaee注意把做好的工程挂在Tomcat上,才运行Tomcat。...把前台js.html输入框输入的东西,传递到后台名称为ajaxRequest,地址/ajaxReq

    精通JS脚本之ExtJS框架.part2.rar

    12.1.1 Ext.Ajax.request方法详解 12.1.2 Ext.Ajax.request操作示例 12.1.3 Ext.Ajax.request提交XML数据 12.2 Ext.Updater基础 12.2.1 Ext.Updater.update方法 12.2.2 Ext.Updater.update操作示例 12.3 利用...

    精通JS脚本之ExtJS框架.part1.rar

    12.1.1 Ext.Ajax.request方法详解 12.1.2 Ext.Ajax.request操作示例 12.1.3 Ext.Ajax.request提交XML数据 12.2 Ext.Updater基础 12.2.1 Ext.Updater.update方法 12.2.2 Ext.Updater.update操作示例 12.3 利用...

    对django views中 request, response的常用操作详解

    json格式还有一些 非表单序列化 的格式,都可以从 request.body 中获取请求体中的数据,对于ajax请求可以使用 request.is_ajax() 来判断 根据请求的信息获取base url(有时候服务的域名比较多,还是需要动态的拼接...

    详解PHP+AJAX无刷新分页实现方法

    PHP+AJAX无刷新分页实现代码详解,最近在看ajax 教程,就想写个简单入门的PHP+AJAX无刷新分页,我们依据ajax开发框架,代码如下: var http_request=false; function send_request(url){//初始化,指定处理函数,发送...

    JQuery.form表单提交参数详解.txt

    ajaxForm()和ajaxSubmit()方法可以接受0个或1个参数,当为单个参数时,该参数可以是一个回调函数,也可以是一个options对象。以下是一个options对象. var options={ target:'#output1', //把服务器返回内容放入id为...

    AJAX XMLHttpRequest对象创建使用详解

    注:IE5/IE6需要使用ActiveRequest对象。 向服务器发送请求 xmlhttp.open(“GET”,”ajax_info.txt”,true); xmlhttp.send(); post方式:xmlhttp.send(“id=1&name=xiaoming”); post提交方式,必须将Content-...

    Django后端接收嵌套Json数据及解析详解

    2、后端,通过request.body接收数据,直接使用json.loads解析,解析前,先decode一下:receive_data = json.loads(request.body.decode())。如果使用simplejson.loads(request.body),就不用decode() 下面是这个问题...

    JS组件Bootstrap Table使用方法详解

    JS组件Bootstrap Table使用方法详解 转载 2016年03月21日 15:06:09 标签: Bootstrap Table 最近客户提出需求,想将原有的管理系统,做下优化,通过手机也能很好展现,想到2个方案: a方案:保留原有的页面,新设计...

    解决拦截器对ajax请求的拦截实例详解

    解决拦截器对ajax请求的的拦截 拦截器配置: public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object obj) throws Exception { //获取判定登陆的session是否存在 String ...

    AJAX(XMLHttpRequest)进行跨域请求方法详解

    跨域请求,顾名思义,就是一个站点中的资源去访问另外一个不同域名站点上的资源。这种情况很常见,比如说通过 style 标签加载外部样式表文件、通过 img 标签加载外部图片、通过 script 标签加载外部脚本文件、通过 ...

    微信小程序之GET请求的实例详解

    学习前端的人应该都会使用ajax的get请求数据,那么在微信小程序里怎样实现get请求呢?下面我就给大家演示一下简单的get请求。 先上代码: //index.js //获取应用实例 var app = getApp() Page({ data: { motto: '...

    详解闭包解决jQuery中AJAX的外部变量问题

    详解闭包解决jQuery中AJAX的外部变量问题 在AJAX中,我们经常都要使用外部变量,经常会多次使用,如下代码 function getCarInfo(){ for(var i=0;i&lt;4;i++){ var carId = $(#carList0+i+ #carId).val(); var ...

    J2EE应用开发详解

    283 16.1 关系数据库和SQL 283 16.2 关系数据库的工作环境 284 16.3 基于JDBC的数据访问技术 285 16.3.1 JDBC概述 285 16.3.2 数据库驱动程序 287 16.3.3 使用JDBC查询数据库 291 16.3.4 常用的JDBC类和方法 ...

    详解用node-images 打造简易图片服务器

    Edit:2016-5-11 修正了代码里面一些明显的错误,并发布在 ajaxjs 库之中,源码在这里。 Edit:2016-5-24 加入 HEAD 请求,检测图片大小。如果小于 80kb 则无须压缩,返回 302 重定向。 node HEAD 请求 var ...

    JavaScript详解(第2版)

     18.4.1 使用Ajax从文件中获取文本   18.4.2 使用Ajax从文件中获取XML   18.4.3 Ajax和表单   18.5 Ajax和JSON   18.5.1 JSON数据结构   18.5.2 使用JSON的步骤   18.5.3 JSON综合示例   18.5...

Global site tag (gtag.js) - Google Analytics