`

jquery异步请求实例

 
阅读更多
1、用ajax

jsp代码如下:


$.ajax({                type:"get",                dataType:"json",                url:"<%=basePath%>actionSmUser.do?method=getUserMsgByUserId",                data:"userId="+userId,                success:function(msg){                    var data = eval("("+msg.responseText+")");                    alert($("#userName").val());                    $("#userName").val(data[0].userName);                                    }            });
2、用getJSON方式:



$.getJSON(url,function(data){                    if(data!=null && data!=""){                        $("#userIdInput").val(data[0].userId);                        $("#userNameInput").val(data[0].userName);                        $("#menusIdInput").val(data[0].menusId);                        $("#depIdInput").val(data[0].depId);                        $("#isValidInput").val(data[0].isValid);                        $("#userIdInput").attr("disabled",true);                    }                            });    两种台Action返回字符串的组织形式可采用JSONArray array 的方式,返回array.toJSONString();



















本文是要做一个二级联动,动态的。通过jquery返回json类型的数据,然后在jsp页面处理,生成第二级下拉列表菜单。
所需js库: jquery.js,json2.js
jar包:json-lib-2.2.3-jdk15.jar,ezmorph-1.0.6.jar


Java代码
<%@ page contentType="text/html; charset=UTF-8"%>  
<%@ taglib prefix="s" uri="/struts-tags"%>  
<script type="text/javascript" src="jquery.js"></script>  
<script type="text/javascript" src="json2.js"></script>  
  
<script type="text/javascript">  
jQuery(function($){  
var obj=$("#category");  
if(typeof obj != 'undefined' && obj !=''){  
    showGongdanType(obj.val());  
}  
});  
function onchangeShow(category){  
jQuery.ajax({  
url : "${contextPath}/assets/statistic/ajaxGetType.do",  
data : {statCategory : category},  // 传递参数  
type : "post",  
cache : false,  
dataType : "json",  
success:onchangecallback  
});  
}  
function onchangecallback(data){   
    document.all['type'].options.length = 0;  
    var str="<option value=''>全部</option>";  
    for(var i=0;i<data.length;i++){  
        str+="<option value='"+data[i].value+"'>"+data[i].valueName+"</option>"  
    }  
    $("#type").html(str);  
}  
function showGongdanType(category){  
jQuery.ajax({  
url : "${contextPath}/assets/statistic/ajaxGetType.do",  
data : {statCategory : category},  
type : "post",  
cache : false,  
dataType : "json",  
success:callback  
});  
}  
function callback(data){   
      document.all['type'].options.length = 0;  
    var str="<option value=''>全部</option>";  
    for(var i=0;i<data.length;i++){  
     str+="<option value='"+data[i].value+"'>"+data[i].valueName+"</option>"  
    }  
    $("#type").html(str);  
// 下面代码是为了第二级下拉列表的定位。因为非struts2的标签,无法自己定位  
    if("${gongdanType}"!=''){  
        for(var i=0;i<data.length;i++){  
            if(data[i].value=="${gongdanType}")  
            document.all['type'].selectedIndex=i+1;  
        }  
    }  
}  
</script>  
  
            <td width="10%" height="25" class="alignLeft">  
                统计类别:  
            </td>  
            <td width="10%" valign="top" class="alignLeft">  
                    <s:select name="form.category" list="categorys" id="category"  
                        listKey="value" listValue="valueName"   
                        onchange="onchangeShow(this.value)">  
                    </s:select>  
            </td>  
            <td width="10%" height="25" class="alignLeft">  
                工单类型:  
            </td>  
            <td width="10%" valign="top" class="alignLeft">  
             <select name="form.gongdanType" id="type" >  
            </select></td>  
<%@ page contentType="text/html; charset=UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%><script type="text/javascript" src="jquery.js"></script><script type="text/javascript" src="json2.js"></script><script type="text/javascript">jQuery(function($){ var obj=$("#category"); if(typeof obj != 'undefined' && obj !=''){ showGongdanType(obj.val());}}); function onchangeShow(category){jQuery.ajax({ url : "${contextPath}/assets/statistic/ajaxGetType.do", data : {statCategory : category}, // 传递参数 type : "post", cache : false, dataType : "json", success:onchangecallback});} function onchangecallback(data){ document.all['type'].options.length = 0; var str="<option value=''>全部</option>"; for(var i=0;i<data.length;i++){ str+="<option value='"+data[i].value+"'>"+data[i].valueName+"</option>"} $("#type").html(str);} function showGongdanType(category){jQuery.ajax({ url : "${contextPath}/assets/statistic/ajaxGetType.do", data : {statCategory : category}, type : "post", cache : false, dataType : "json", success:callback});} function callback(data){ document.all['type'].options.length = 0; var str="<option value=''>全部</option>"; for(var i=0;i<data.length;i++){ str+="<option value='"+data[i].value+"'>"+data[i].valueName+"</option>"} $("#type").html(str); // 下面代码是为了第二级下拉列表的定位。因为非struts2的标签,无法自己定位 if("${gongdanType}"!=''){ for(var i=0;i<data.length;i++){ if(data[i].value=="${gongdanType}") document.all['type'].selectedIndex=i+1;}}}</script><td width="10%" height="25" class="alignLeft">统计类别: </td><td width="10%" valign="top" class="alignLeft"><s:select name="form.category" list="categorys" id="category" listKey="value" listValue="valueName" onchange="onchangeShow(this.value)"></s:select></td><td width="10%" height="25" class="alignLeft">工单类型: </td><td width="10%" valign="top" class="alignLeft"><select name="form.gongdanType" id="type" ></select></td>


上面写了两个请求的函数,代码一样,只不过在第一级下拉列表onchange时,第二级下拉列表要定位在第一个值“全部”。


action

Java代码
public class GongdanTypeStatAction extends ActionSupport implements Preparable {  
      
    private String type;  
      
    private List<Param> categorys;  
      
    private List<Param> gongdanTypes;  
      
    private String statCategory;  
  
    public void prepare() throws Exception {  
        type = ServletActionContext.getRequest().getParameter("type");  
        categorys = new ArrayList<Param>();  
        Param param1 = new Param();  
        param1.setValue("CB");  
        param1.setValueName("业务变更");  
        Param param2 = new Param();  
        param2.setValue("APP");  
        param2.setValueName("资源申请");  
        categorys.add(param1);  
        categorys.add(param2);  
    }  
      
    // 得到业务变更和资源申请下的变更类别  
    public void ajaxGetType() throws Exception {  
        // 工单类型  
        if("CB".equals(statCategory)){  
            gongdanTypes = new ArrayList<Param>();  
            for(EChangeBusinessCategory ec:EChangeBusinessCategory.values()){  
                Param param = new Param();  
                param.setValue(ec.getKey());  
                param.setValueName(ec.getLable());  
                gongdanTypes.add(param);  
            }  
        }else if("APP".equals(statCategory)){  
            gongdanTypes = new ArrayList<Param>();  
            for (EApplyType et : EApplyType.values()) {  
                Param param = new Param();  
                param.setValue(et.getKey());  
                param.setValueName(et.getName());  
                gongdanTypes.add(param);  
            }  
        }  
        JSONArray jsonObj = JSONArray.fromObject(gongdanTypes);  
        sendMsg(jsonObj.toString());    //发送JSON格式的字符串回JS端      
    }  
      
    public void sendMsg(String content) throws IOException{      
        HttpServletResponse response = ServletActionContext.getResponse();      
        response.setCharacterEncoding("UTF-8");      
        response.getWriter().write(content);      
    }    
}  
public class GongdanTypeStatAction extends ActionSupport implements Preparable { private String type; private List<Param> categorys; private List<Param> gongdanTypes; private String statCategory; public void prepare() throws Exception { type = ServletActionContext.getRequest().getParameter("type"); categorys = new ArrayList<Param>(); Param param1 = new Param(); param1.setValue("CB"); param1.setValueName("业务变更"); Param param2 = new Param(); param2.setValue("APP"); param2.setValueName("资源申请"); categorys.add(param1); categorys.add(param2);} // 得到业务变更和资源申请下的变更类别 public void ajaxGetType() throws Exception { // 工单类型 if("CB".equals(statCategory)){ gongdanTypes = new ArrayList<Param>(); for(EChangeBusinessCategory ec:EChangeBusinessCategory.values()){ Param param = new Param(); param.setValue(ec.getKey()); param.setValueName(ec.getLable()); gongdanTypes.add(param);}}else if("APP".equals(statCategory)){ gongdanTypes = new ArrayList<Param>(); for (EApplyType et : EApplyType.values()) { Param param = new Param(); param.setValue(et.getKey()); param.setValueName(et.getName()); gongdanTypes.add(param);}} JSONArray jsonObj = JSONArray.fromObject(gongdanTypes); sendMsg(jsonObj.toString()); //发送JSON格式的字符串回JS端 } public void sendMsg(String content) throws IOException{ HttpServletResponse response = ServletActionContext.getResponse(); response.setCharacterEncoding("UTF-8"); response.getWriter().write(content); } }



Param.java

Java代码
  
public class Param {  
  
    private Object entity;  
  
      
    private String value;  
  
      
    private String valueName;  
  
    public Param() {  
  
    }  
  
      
    public Param(String value, String valueName) {  
        this.value = value;  
        this.valueName = valueName;  
    }  
  
      
    public String getValue() {  
        return value;  
    }  
  
      
    public void setValue(String value) {  
        this.value = value;  
    }  
  
      
    public String getValueName() {  
        return valueName;  
    }  
  
      
    public void setValueName(String valueName) {  
        this.valueName = valueName;  
    }  
  
      
    public Object getEntity() {  
        return entity;  
    }  
  
      
    public void setEntity(Object entity) {  
        this.entity = entity;  
    }  
  
}  
public class Param { private Object entity; private String value; private String valueName; public Param() {} public Param(String value, String valueName) { this.value = value; this.valueName = valueName;} public String getValue() { return value;} public void setValue(String value) { this.value = value;} public String getValueName() { return valueName;} public void setValueName(String valueName) { this.valueName = valueName;} public Object getEntity() { return entity;} public void setEntity(Object entity) { this.entity = entity;}}


两个枚举类型
EChangeBusinessCategory.java
EApplyType.java

Java代码
public enum EChangeBusinessCategory {  
  
    // 系统安装  
    SYSTEM_SETUP("SYS", "系统安装"),  
    // 监控需求  
    MONITOR_DEMAND("MONI", "监控需求"),  
    // 机柜需求  
    CABINETS_DEMAND("CABI", "机柜需求"),  
      
    // 撤销存储  
    STORAGE_DEMAND("STOR","撤销存储"),  
    // 网络需求  
    NETWORK_DEMAND("NET", "网络需求");  
  
    private String key;  
  
    private String lable;  
  
  
    EChangeBusinessCategory(String key, String value) {  
        this.key = key;  
        this.lable = value;  
    }  
  
      
    public static EChangeBusinessCategory getEnumType(String key) {  
        EChangeBusinessCategory[] values = EChangeBusinessCategory.values();  
        for (int i = 0; i < values.length; i++) {  
            EChangeBusinessCategory eInfo = values[i];  
            if (eInfo.getKey().equals(key)) {  
                return eInfo;  
            }  
        }  
        return null;  
    }  
  
      
    public String getLable() {  
        return lable;  
    }  
  
      
    public String getKey() {  
        return key;  
    }  
  
}  
  
  
public enum EApplyType {  
  
    SERV("SERV", "服务器"),  
  
    CABI("CABI", "机柜"),  
  
    IP("IP", "IP"),  
  
    STOR("STOR", "存储");  
  
    private String key;  
  
    private String name;  
  
      
    EApplyType(String key, String name) {  
        this.key = key;  
        this.name = name;  
    }  
  
      
    public String getKey() {  
        return key;  
    }  
  
      
    public String getName() {  
        return name;  
    }  
  
      
    public static EApplyType getEnumType(String key) {  
        EApplyType[] values = EApplyType.values();  
        for (int i = 0; i < values.length; i++) {  
            EApplyType eInfo = values[i];  
            if (eInfo.getKey().equals(key)) {  
                return eInfo;  
            }  
        }  
        return null;  
    }  
}  
public enum EChangeBusinessCategory { // 系统安装 SYSTEM_SETUP("SYS", "系统安装"), // 监控需求 MONITOR_DEMAND("MONI", "监控需求"), // 机柜需求 CABINETS_DEMAND("CABI", "机柜需求"), // 撤销存储 STORAGE_DEMAND("STOR","撤销存储"), // 网络需求 NETWORK_DEMAND("NET", "网络需求"); private String key; private String lable; EChangeBusinessCategory(String key, String value) { this.key = key; this.lable = value;} public static EChangeBusinessCategory getEnumType(String key) { EChangeBusinessCategory[] values = EChangeBusinessCategory.values(); for (int i = 0; i < values.length; i++) { EChangeBusinessCategory eInfo = values[i]; if (eInfo.getKey().equals(key)) { return eInfo;}} return null;} public String getLable() { return lable;} public String getKey() { return key;}} public enum EApplyType { SERV("SERV", "服务器"), CABI("CABI", "机柜"), IP("IP", "IP"), STOR("STOR", "存储"); private String key; private String name; EApplyType(String key, String name) { this.key = key; this.name = name;} public String getKey() { return key;} public String getName() { return name;} public static EApplyType getEnumType(String key) { EApplyType[] values = EApplyType.values(); for (int i = 0; i < values.length; i++) { EApplyType eInfo = values[i]; if (eInfo.getKey().equals(key)) { return eInfo;}} return null;}}



action配置

Java代码
<action name="ajaxGetType" class="GongdanTypeStatAction"   
    method="ajaxGetType">  
</action>  
<action name="ajaxGetType" class="GongdanTypeStatAction" method="ajaxGetType"></action>


分享到:
评论

相关推荐

    jquery异步请求例子

    在`jquery异步请求例子`这个场景中,我们可以创建一个简单的GET请求来获取服务器数据。假设我们有一个API接口`/api/users`用于获取用户列表: ```javascript $.ajax({ url: '/api/users', type: 'GET', dataType...

    jquery异步请求实例代码

    ### jQuery异步请求详解 #### 一、引言 在Web开发中,异步请求是一项非常重要的技术。它能够使得页面无需重新加载即可与服务器进行数据交互,极大地提升了用户体验。jQuery作为一款流行的JavaScript库,提供了丰富...

    JQuery异步上传下载

    首先,我们要了解jQuery异步上传的基本原理。在传统的文件上传方式中,用户提交表单时会刷新整个页面,用户体验不佳。而jQuery通过Ajax技术实现了异步上传,即在后台处理文件上传,前端页面保持不刷新,提升了用户...

    Jquery Ajax分页(有实例)

    jQuery,一个轻量级、功能丰富的JavaScript库,结合AJAX(异步JavaScript和XML)技术,可以实现动态、高效的分页效果。本篇文章将深入探讨jQuery AJAX分页的原理与实践,通过具体的实例来展示如何实现炫酷的分页功能...

    Jquery异步请求数据实例代码

    ### Jquery异步请求数据实例代码详解 #### 一、Jquery向aspx页面请求数据 **场景描述:** 此示例展示了如何使用jQuery库来实现客户端与服务器端的异步交互,具体而言,是如何从客户端(即浏览器)向一个ASP.NET...

    基于ASP.NET接口的AJAX异步请求实例(不是控件)

    **ASP.NET AJAX异步请求详解** ASP.NET AJAX(Asynchronous JavaScript and XML)是微软提供的一套用于构建富客户端Web应用程序的技术,它允许开发者创建具有部分页面刷新、无刷新更新和异步交互功能的Web应用。在...

    jQuery网页开发实例精解源代码

    jQuery的Ajax功能简化了异步数据请求。书中实例可能涵盖使用`.ajax()`, `.get()`, `.post()`等方法发送请求,以及如何处理返回的数据,帮助读者理解如何实现无刷新的数据交互。 除此之外,书中还可能涉及jQuery插件...

    jquery的ajax异步请求接收返回json数据实例

    在JavaScript的世界中,jQuery库极大地简化了与服务器端交互的过程,特别是对于异步请求(Ajax)和处理返回的JSON数据。本篇文章将深入探讨如何使用jQuery的`$.ajax`方法来实现异步请求并接收JSON数据。 首先,JSON...

    一个完整的jquery+ajax传送请求的实例

    在这个实例中,我们将使用jQuery的$.ajax方法来发起一个异步请求。$.ajax方法接受一个配置对象,该对象包含了许多可选参数,如URL、请求类型(GET或POST)、数据类型(如JSON、HTML等)以及回调函数等。下面是一个...

    使用JQuery load函数异步分页实例

    在提供的压缩包文件"JQuery异步分页实例"中,你应该能找到一个完整的示例代码,包括HTML、CSS和JavaScript文件。通过查看和运行这些文件,你可以更深入地理解`load()`函数在异步分页中的应用,并学习如何在实际项目...

    网页聊天jQuery异步刷新

    在"网页聊天jQuery异步刷新"这个实例中,我们将探讨如何结合jQuery、JavaScript和C#后端技术来创建一个简单的在线聊天系统。 首先,我们要理解jQuery的核心概念。jQuery是一个轻量级的JavaScript库,它的主要优点...

    jquery表格操作实例

    本篇文章将深入探讨jQuery在表格操作方面的应用实例,这对于前端开发人员来说是极其重要的技能。 首先,我们需要理解jQuery是如何选择和操作HTML元素的。使用jQuery的选择器,如`$("#tableId")`,可以轻松地选取...

    整合jquery+json+struts2异步提交实例

    在这个实例中,`ajaxasync`可能是指一系列的Ajax异步请求示例。 综上所述,"整合jquery+json+struts2异步提交实例"是一个实用的Web开发教程,它演示了如何利用jQuery的Ajax功能和Struts2框架处理JSON数据,实现前后...

    基于jquery的异步上传文件插件,使用了HTML5的FormData对象.zip

    // 使用jQuery的$.ajax发送异步请求 $.ajax({ url: 'upload.php', // 服务器处理文件的地址 type: 'POST', data: formData, contentType: false, // 需要禁用默认的contentType,否则FormData会被破坏 ...

    JQuery+AJax实例,异步保存

    本实例将深入探讨如何使用jQuery库配合Ajax技术,以简洁的代码和高效的流程来实现异步保存功能。 首先,jQuery是一个轻量级的JavaScript库,它简化了DOM操作、事件处理、动画设计以及Ajax交互等多个方面。它的语法...

    jQuery中ajax请求后台返回json数据并渲染HTML的方法

    1. jQuery的AJAX方法:在文章中,通过使用jQuery提供的$.ajax()方法来发起异步请求。这个方法允许我们指定请求的类型(如GET或POST)、URL地址、传递的数据以及当请求成功时如何处理返回的数据。 2. 后台数据的返回...

    jquery+struts2实现异步刷新实例

    jQuery封装了XMLHttpRequest对象,提供了如`$.ajax()`, `$.get()`, `$.post()`等便捷的异步请求方式。在这个实例中,我们将主要使用`$.ajax()`方法,它支持GET和POST等多种HTTP请求方式,并能处理JSON、HTML等多种...

    jQuery 精通的实例

    5.Ajax实战:利用jQuery的Ajax功能实现异步数据加载,如从服务器获取数据并更新页面内容。 6. 插件使用:可能有已经编写好的jQuery插件,展示如何引入并使用它们来增强网页功能。 通过深入研究这些实例,你不仅能...

    Ajax异步请求

    **Ajax异步请求详解** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新,大大提升了用户体验。...

Global site tag (gtag.js) - Google Analytics