初探jQuery的Ajax特性
来源:互联网 发布:长春数据库工程师招聘 编辑:程序博客网 时间:2024/04/30 01:21
最近刚接触jQuery,初探Ajax功能,完成了一个根据产品分类查询产品的级联下拉列表的功能。下面具体介绍实现过程。
注意:本示例需要jQuery1.2.6的支持。
1、下载jQuery1.2.6,并在页面中导入js
- <script type="text/javascript" language="javascript" src="js/jquery/jquery-1.2.6.min.js"></script>
2、写一个基于jQuery且可以重用的调用Ajax的方法
- // 发送request请求
- // 注意:需要jQuery的支持
- // url:要请求的URL,如:/xxx/AjaxAction.do
// data:要请求的参数,与url一起构成一个完整的URL请求,如:method=list&id=123
// callback:回调函数的名称,如:send_request_callback,请求成功后,会调用send_request_callback函数 - function ajax_request(url,data,callback){
- jQuery.ajax({
- type: "POST", // GET,POST
- url: url, // AjaxAction.do
- data: data, // method=list&id=123
- success: function(responseText){
- var commond = callback + "(/"" + responseText + "/")";
- eval(commond);
- },
- error: function (XMLHttpRequest, textStatus, errorThrown) {
- alert("Ajax请求失败!");
- }
- });
- }
3、完整的页面代码
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <html>
- <head>
- <title>根据分类查询产品的Ajax实现</title>
- <script type="text/javascript" language="javascript" src="js/jquery/jquery-1.2.6.min.js"></script>
- <script language="javascript">
- // 发送request请求
- // 注意:需要jQuery的支持
- // url:要请求的URL,如:/xxx/AjaxAction.do
- // data:要请求的参数,与url一起构成一个完整的URL请求,如:method=listid=123
- // callback:回调函数的名称,如:send_request_callback,请求成功后,会调用send_request_callback函数
- function ajax_request(url,data,callback){
- jQuery.ajax({
- type: "POST", // GET,POST
- url: url, // AjaxAction.do
- data: data, // method=listid=123
- success: function(responseText){
- var commond = callback + "(/"" + responseText + "/")";
- eval(commond);
- },
- error: function (XMLHttpRequest, textStatus, errorThrown) {
- alert("Ajax请求失败!");
- }
- });
- }
- // 发送请求
- function select_chanpin(){
- // 分类
- var fenlei = document.getElementById("fenlei").value;
- if(fenlei != ""){
- var url = "/AjaxAction.do";
- var data = "method=select_chanpin&fenlei=" + fenlei;
- ajax_request(url,data,"select_chanpin_callback");
- } else {
- document.getElementById("chanpin_span").innerHTML = "<select name='chanpin'><option value=''>请先选择分类</option></select>";
- }
- }
- // 回调函数
- function select_chanpin_callback(responseText){
- // 假设请求回应后返回的是HTML代码串,则直接显示;如果是XML串,还需要解析,这里略去。
- // 返回的HTML代码串示例:<select name='chanpin'><option value='产品一'>产品一</option><option value='产品二'>产品二</option></select>
- document.getElementById("chanpin_span").innerHTML = responseText;
- }
- </script>
- </head>
- <body>
- 分类:
- <select name="fenlei" onchange="select_chanpin()">
- <option value="1">分类一</option>
- <option value="2">分类二</option>
- <option value="3">分类三</option>
- </select>
- 产品:
- <span id="chanpin_span">
- <select name="chanpin">
- <option value="">请先选择分类</option>
- </select>
- </span>
- </body>
- </html>
4、后台AjaxAction的实现
- package com.xx.yy.action;
- import java.io.UnsupportedEncodingException;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.struts.action.ActionForm;
- import org.apache.struts.action.ActionForward;
- import org.apache.struts.action.ActionMapping;
- import org.apache.velocity.tools.generic.EscapeTool;
- import com.dm.wmf.core.ActionContext;
- import com.dm.wmf.core.BaseDispatchAction;
- import com.dm.wmf.service.CommonService;
- import com.dm.wmf.util.RequestUtils;
- public class AjaxAction extends BaseDispatchAction {
- /**
- * 查询产品列表
- * @param mapping
- * @param form
- * @param request
- * @param response
- * @param context
- * @return
- * @throws Exception
- */
- @SuppressWarnings("unchecked")
- public ActionForward select_CPMC(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response,
- ActionContext context) throws Exception {
- StringBuffer sb = new StringBuffer();
- EscapeTool esc = new EscapeTool();
- // 分类(名称)
- String fenlei = RequestUtils.getParameter(request, "fenlei", null);
- fenlei = AjaxEncode(fenlei); // 解码,Ajax默认用的是UTF-8编码
- // 如果分类不为空
- if(fenlei != null){
- // 根据分类查询产品,可以是从数据库等查询,这里略去
- List chanpin_list = ...;
- // 拼接select组件
- sb.append("<select name='chanpin'>");
- for (int i = 0; i < chanpin_list.size(); i++) {
- Map map = (Map)chanpin_list.get(i);
- String CPMC = (String)map.get("CPMC");
- CPMC = esc.html(CPMC); // 此处最好进行转码,否则会出现单引号或双引号等字符,我用的是VelocityTools的EscapeTool转码功能
- sb.append("<option value='" + CPMC + "'>" + CPMC + "</option>");
- }
- sb.append("</select>");
- } else {
- sb.append("<select name='").append(select_name).append("'>");
- sb.append("<option value=''>Ajax参数不正确</option>");
- sb.append("</select>");
- }
- response.setHeader("Cache-Control", "no-cache, must-revalidate");
- response.setContentType("text/html;charset=GBK");
- response.getWriter().write(sb.toString());
- return null;
- }
- /**
- * 对Ajax传过来的字符串进行解码
- * @param str
- * @return
- */
- private String AjaxEncode(String str){
- String ret = null;
- try {
- if(str != null){
- ret = new String(str.getBytes(),"UTF-8");
- }
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- return ret;
- }
- }
- 初探jQuery的Ajax特性
- JQuery初探---Jquery/Ajax
- Jquery ajax 初探
- jquery.ajax源代码初探
- 初探 JQuery 之 AJAX
- jquery - ajax特性
- 黑马day18 jquery高级特性&ajax的$.ajax()方法
- 黑马day18 jquery高级特性&Ajax的load方法
- 初探 jQuery 的 Sizzle 选择器
- 初探 jQuery 的 Sizzle 选择器
- JavaScript的面向对象特性初探
- PHP的常见ORM特性初探
- Ajax初探
- AJAX初探
- AJAX初探
- AJAX初探
- 初探AJAX
- ajax初探
- 义工失业了
- 删除特定字符(时间复杂度O(n))
- 搭建一套简单的CDN网络
- 由Huffman编码所学到的
- 国内各大博客网站Zoundry帐户设置整理
- 初探jQuery的Ajax特性
- SQL Server 2005连接字符串
- 谋划(1)
- 2008年8月26号,星期二,晴。欲穷千里目,更上一层楼。 —— 王之涣《登鹳雀楼》今天是我博士生涯的第51天,争吵,分歧,以自我为中心的考虑问题,那个关键问题
- 2008年8月27号,星期三,晴。锲而舍之,朽木不折;锲而不舍,金石可镂。 ——《荀子•劝学》2008年8月27号,星期三,晴。
- 2008年8月28号,星期四,晴。石可破也,而不可夺坚;丹可磨也,而不可夺赤。 《吕氏春秋•诚廉》
- [英语阅读]日本男子网上请愿 要与漫画人物结婚
- 2008年8月29号,星期五,晴。没有方向的船都是逆风的。导师胡
- [双语阅读]巴西建成首个“足球博物馆”