Prototype的Ajax支持使用Ajax.Responders对象

本文介绍了一个使用Ajax.Responders注册全局事件监听器的例子,通过监听Ajax请求的状态变化,实现加载指示器的显示与隐藏,并展示了如何在用户输入时触发异步请求及处理服务器响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个对象用于注册Ajax时间监听器,该对象注册的Ajax时间监听器不管是那个XMLHttpRequest在发生交互,都能被自动触发。而且,Ajax.Responders注册的时间监听器是全局有效的,主要方法是register(函数名)。

 

 

一个简单的例子:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>输入提示示范</title>
		<meta name="author" content="Yeeku.H.Lee" />
		<meta name="website" content="http://www.crazyit.org" />
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	</head>
	<body>
		<h3>
			请输入您喜欢的水果
		</h3>
		<div style="width: 280px; font-size: 9pt">
			输入apple、banana、peach可看到明显效果:
		</div>
		<br />
		<input id="favorite" name="favorite" type="text"
			onblur="$('tips').hide()" />
		<img id="Loadingimg" src="img/indicator.gif" style="display: none" />
		<div id="tips"
			style="width: 160px; border: 1px solid menu; background-color: #ffffcc; display: none"></div>
		<script src="js/prototype-1.6.0.3.js" type="text/javascript"></script>
		<script type="text/javascript"><!--
			//监控目标文本框输入文字发生改变的函数
			function searchFruit() {
				//请求的地址
				var url = 'TipServlet';
				//将favorite表单域的值转换为请求参数
				var params = Form.Element.serialize('favorite');
				//创建Ajax.Request对象,对应于发送请求
				var myAjax = new Ajax.Request(url, {
					//请求方式:POST
					method : 'post',
					//请求参数
					parameters : params,
					//指定回调函数
					onComplete : showResponse,
					//是否异步发送请求
					asynchronous : true
				});
			}
			//定义回调函数
			function showResponse(request) {
				//在提示tip元素中输出服务器的响应
				$('tips').innerHTML = request.responseText;
				//显示提示tip对象
				$('tips').show();
			}
			//为favorite表单域绑定事件处理函数
			new Form.Element.Observer("favorite", 0.5, searchFruit);
			//定义Ajax的全局事件处理器
			var myGlobalHandlers = {
				//刚刚开始Ajax交互时触发该属性指定的函数。
				onCreate : function() {
					$('Loadingimg').show();
				},
				//交互失败时触发该属性指定的函数。
				onFailure : function() {
					alert('对不起!\n页面加载出错!');
				},
				//交互成功时触发该属性指定的函数。
				onComplete : function() {
					//如果正在进行Ajax交互的XMLHttpRequest对象数目为0
					if (Ajax.activeRequestCount == 0) {
						$('Loadingimg').hide();
					}
				}
			};
			//为Ajax事件绑定全局的事件处理器
			Ajax.Responders.register(myGlobalHandlers);
		</script>
	</body>
</html>
 Servlet代码:
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class TipServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		//获取请求参数favorite
		String hdchar = request.getParameter("favorite");
		System.out.println(hdchar);
		PrintWriter out = response.getWriter();
		//如果请求参数是apple的前几个字符,则输出apple
		if ("apple".startsWith(hdchar))
		{
			out.println("apple");
		}
		//如果请求参数是banana的前几个字符,则输出banana
		else if("banana".startsWith(hdchar))
		{
			out.println("banana");
		}
		//如果请求参数是peach的前几个字符,则输出peach
		else if("peach".startsWith(hdchar))
		{
			out.println("peach");
		}
		//否则将输出other fruit
		else
		{
			out.println("other fruit");
		}
	}

}
 
内容概要:本文档详细介绍了Analog Devices公司生产的AD8436真均方根-直流(RMS-to-DC)转换器的技术细节及其应用场景。AD8436由三个独立模块构成:轨到轨FET输入放大器、高动态范围均方根计算内核和精密轨到轨输出放大器。该器件不仅体积小巧、功耗低,而且具有广泛的输入电压范围和快速响应特性。文档涵盖了AD8436的工作原理、配置选项、外部组件选择(如电容)、增益调节、单电源供电、电流互感器配置、接地故障检测、三相电源监测等方面的内容。此外,还特别强调了PCB设计注意事项和误差源分析,旨在帮助工程师更好地理解和应用这款高性能的RMS-DC转换器。 适合人群:从事模拟电路设计的专业工程师和技术人员,尤其是那些需要精确测量交流电信号均方根值的应用开发者。 使用场景及目标:①用于工业自动化、医疗设备、电力监控等领域,实现对交流电压或电流的精准测量;②适用于手持式数字万用表及其他便携式仪器仪表,提供高效的单电源解决方案;③在电流互感器配置中,用于检测微小的电流变化,保障电气安全;④应用于三相电力系统监控,优化建立时间和转换精度。 其他说明:为了确保最佳性能,文档推荐使用高质量的电容器件,并给出了详细的PCB布局指导。同时提醒用户关注电介质吸收和泄漏电流等因素对测量准确性的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值