prototype.js及 new Ajax.Request

本文介绍了Prototype.js这一优雅的JavaScript库的特点与应用。它通过扩展JavaScript增强了Ajax支持,并提供了实用函数与Ajax对象来简化Web开发过程。文中还通过具体实例展示了如何使用Ajax.Request和Ajax.Updater类。

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

一、[b]prototype.js[/b]是一个非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajax,国外有多个基于此类库实现的效果库,也做得很棒。
prototype.js不仅是一个有很大实用价值的js库,而且有很高的学习价值,所以我强烈建议B/S开发人员和对JS开发感兴趣的朋友去浏览一些它的源代码,其中有很多的珠玑,你绝对会觉得读它的源代码是一种享受。

二、[b]一些实用的函数[/b]
这个类库带有很多预定义的对象和实用函数,这些东东的目的显然是把你从一些重复的打字中解放出来 。

三、[b]Ajax对象[/b]
Ajax 对象是一个预定义对象,由这个包创建,为了封装和简化编写AJAX 功能涉及的狡猾的代码。 这个对象包含一系列的封装AJAX逻辑的类。我们来看看其中几个类。
使用Ajax.Request类;使用Ajax.Updater类

四、[b]JavaScript类扩展[/b]
prototype.js 类库实现强大功能的一种途径是扩展已有的JavaScript 类。

五、[b]new Ajax.Request();[/b]
实例一:

<script type="text/javascript" >
var myAjax = new Ajax.Request(
"/amm/sysmanage/dept.shtml?",
{
method:"post", //表单提交方式
parameters:"method=queryDept&name=Tom&age=26", //提交的表单数据
setRequestHeader:{"If-Modified-Since":"0"}, //禁止读取缓存数据
onComplete:function(x){ //提交成功回调
alert(x.responseText);//使用浏览器调试,可查看x变量的全部属性和方法
},
onError:function(x){ //提交失败回调
alert(x.statusText);
}
}
);
</script>

注:parameters 参数若是不列出,我们在开发中对于Form 表单这样的数据 可以这样处理
parameters:Form.serialize('FormName') FormName 为页面中表单的 ID
实例二:

<script type="text/javascript" >
var xmlString = "<root>"
+"<people><name>caizhongqi</name><sex>male</sex></people>"
+"<people><name>ahuang</name><sex>female</sex></people>"
+" </root>";
var myAjax = new Ajax.Request(
"/amm/sysmanage/dept.shtml?",
{
method:"post", //表单提交方式
postBody:xmlString, //提交的xml
setRequestHeader:{"content-Type":"text/xml"}, //指定发送的数据为 xml 文档(非字符串)
onComplete:function(x){ //提交成功回调
alert(x.responseXML.xml);
},
onError:function(x){ //提交失败回调
alert(x.statusText);
}
}
);
</script>


六、Ajax.Updater类是对Ajax.Request类的简化,使用该类不需要使用回调方法,该类自动讲服务器响应显示到某个容器。
实例一:

<%@ 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=GBK" />
</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';
//取得请求参数字符串
var params = $('favorite').serialize();
//创建Ajax.Updater对象,对应于发送一次请求
var myAjax = new Ajax.Updater(
//指定tips作为服务器响应的容器
'tips', url, {
//发送请求的方法
method : 'post',
//请求参数
parameters : params,
//指定Ajax交互结束后的回调函数,匿名函数——显示id为tips的元素
onComplete : function() {
$('tips').show();
}
});
}
//为表单域绑定事件监听器
new Form.Element.Observer("favorite", 0.5, searchFruit);
//定义Ajax事件的全局处理器
var myGlobalHandlers = {
//当开始Ajax交互时,激发该函数
onCreate : function() {
$('Loadingimg').show();
},
//当Ajax交互失败后,激发该函数。
onFailure : function() {
alert('对不起!\n页面加载出错!');
},
//当Ajax交互结束后,激发该函数。
onComplete : function() {
//如果所有Ajax交互都已完成,隐藏Loadingimg对象
if (Ajax.activeRequestCount == 0) {
$('Loadingimg').hide();
}
}
};
//为Ajax事件绑定全局事件处理器
Ajax.Responders.register(myGlobalHandlers);
</script>
</body>
</html>


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");
//out.write("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");
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值