prototype.js及 new Ajax.Request
一、prototype.js是一个非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajax,国外有多个基于此类库实现的效果库,也做得很棒。
prototype.js不仅是一个有很大实用价值的js库,而且有很高的学习价值,所以我强烈建议B/S开发人员和对JS开发感兴趣的朋友去浏览一些它的源代码,其中有很多的珠玑,你绝对会觉得读它的源代码是一种享受。
二、一些实用的函数
这个类库带有很多预定义的对象和实用函数,这些东东的目的显然是把你从一些重复的打字中解放出来。
三、Ajax对象
Ajax对象是一个预定义对象,由这个包创建,为了封装和简化编写AJAX功能涉及的狡猾的代码。这个对象包含一系列的封装AJAX逻辑的类。我们来看看其中几个类。
使用Ajax.Request类;使用Ajax.Updater类
四、JavaScript类扩展
prototype.js类库实现强大功能的一种途径是扩展已有的JavaScript类。
五、newAjax.Request();
实例一:
<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"); } } }
相关推荐
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo