`

java中如何在ajax发送参数的时候,参数以数组的方式传递到后数组台

阅读更多

/*配对后发送微博,这个需要@xx*/
    function faweibo(id){
        var users = new Array();
     
        $("#friendList dd p input[type=checkbox]").each(function(i){
            if($(this).attr("checked"))
                users.push(encodeURIComponent($(this).val()));
        });
       
        users = toJSON(users);
        $.ajax({
                   type:'post',
                   url:"/qq/pei/faweibo.do",
                   data:{'users':users},
                   success: function(data){
               
                   popfruit('send_ok',200);
            });
    }

 

上面的这个函数是当弹窗一个窗口的时候,获取用户选择的checkbox,如果选中了就将用户的id放到数组,传给后台

这里需要一个arraytoson的方法

//将一个数组转换json对象
    function toJSON(obj){
         var json = '({';
        $.each(obj, function(k,v){
          var q = typeof v == 'string' ? ~v.indexOf("'") ? '"' : "'" : '';
          if (typeof v == 'object')
             v = toJSON(v).slice(0,-1).substr(1);
          json+= k + ':'+ q + v + q + ',';
        });
         return json.slice(0,-1)+'})';
        };

 

如果后台是用php就简单多了,  data:{'users':users},根本就不要转换。在java中就需要自己进行转换。

下面的parseJsonToArray就是负责转换的。

 

 

@Action(value = "faweibo", results = { @Result(name = SUCCESS, type = "json", params = {
            "target", "jsonMap" }) })
    public String faweibo() throws Exception {
        String users = request.getParameter("users");

        users = java.net.URLDecoder.decode(users, "utf-8");
        List<String> u = parseJsonToArray(users);

       //u中放的就是前台传过来的userId的值。

 

}

 

这里需要解析传过来的json字符串

 

public static List<String> parseJsonToArray(String data) {
        List<String> list = new ArrayList<String>();
        if (null == data || data.length() == 0) {
            return null;
        }
        if (data.length() < 4) {
            return null;
        }
        String temp = data.substring(2, data.length() - 2);
        temp = temp.replaceAll("\\'", "");
        String splitResult[] = temp.split(",");
        for (int i = 0; i < splitResult.length; i++) {
            list.add(splitResult[i].substring(splitResult[i].indexOf(":") + 1));
        }
        return list;
    }

这样就可以获得前台传过来的多个参数。

 

这里想要要用数组来传参,而不是通过 data:{'user1':user1,''user2':user2,''user3':user3,'}这样的方式,主要是考虑如果有多个checkbox的时候,这样添加参数会很蛋疼。所以想到用数组传参来解决这个问题。

 

以上是自己在项目中用的解决办法,希望可以得到大家的指点。

 

分享到:
评论
2 楼 niaoqq1 2015-09-15  
不好使。来看看我的方法。
js:
var NodeArr=getSortAfterNodes();//创建数组
var nodeJson=JSON.stringify(NodeArr);//对象或数组转json字符串(浏览器不支持请使用json2.js)
$.ajax({
cache:true,
type:"post",
url:"topoTree!updateTreeNodeOrder.action",
data:{nodeJson:nodeJson},
success:function(data){
try{
var jsonObj = eval('('+data+')');
success = jsonObj.success;

}catch(e){
alert(e);
}
},
error:function(request){

}
});
java:
HttpServletRequest request = ServletActionContext.getRequest();
String nodeJson = request.getParameter("nodeJson");
List<Map<String, Object>> list=JsonUtil.jsonArrStrToList(nodeJson);//网上下载的json工具类,将json字符串转为list
1 楼 lt26i 2015-01-21  
帮了大忙了向楼主学习

相关推荐

    jquery ajax 向后台传递数组参数示例

    当需要传递数组作为参数时,可能会遇到一些挑战,特别是在数组中包含复杂对象的情况。本文将深入讲解如何在jQuery AJAX中向后台传递数组参数,并提供示例代码。 首先,理解问题的关键在于JavaScript数组在传递给...

    ajax传递list对象数组

    ### AJAX传递List对象数组知识点详解 #### 一、前言 在Web开发中,前后端交互是必不可少的一个环节。AJAX作为一种实现异步加载数据的技术,可以有效地提升用户体验。本篇将详细介绍如何通过AJAX来传递一个List对象...

    AJAX和struts2传递JSON数组

    在本场景中,我们将探讨如何使用AJAX来传递JSON数组,并在Struts2的Action中接收和处理这些数据。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析...

    jquery的ajax传json对象数组到struts2的action

    本文将深入探讨如何使用jQuery的AJAX方法发送JSON对象数组到Struts2的Action,并在后端进行处理。 首先,我们了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...

    jQuery Ajax向服务端传递数组参数值的实例代码

    通过jQuery Ajax传递数组参数值到服务器端的这三种方法各有特点。使用`serialize()`方法适合于表单元素,而直接在Ajax请求中传递JavaScript对象则更为直观和简洁。当需要传递复杂的数据结构或者想明确指定内容类型时...

    Spring MVC不能直接接收list类型参数的问题

    当前端使用 jQuery 向后台传递数组类型的参数时,Java 后台尝试直接通过 `List` 类型来接收这些参数,却发现无法取到任何数据。例如: **前端代码示例**: ```javascript $.ajax({ url: "xxxx", data: { areaList...

    springmvc 传递和接收数组参数的实例

    从 URL 中传递数组参数到 Controller 类中接收数组参数,我们将一步步地学习如何实现。 URL 中传递数组参数 在 SpringMVC 中,可以使用 GET 或 POST 方法将数组参数传递到 Controller 中。下面是一个使用 GET 方法...

    jQuery Ajax向某个页面传值并取得返回的数组

    "jQuery Ajax向某个页面传值并取得返回的数组"这一主题涉及到如何使用jQuery的Ajax方法来发送请求,传递参数,并接收服务器返回的数据,特别是数组类型的数据。 首先,我们需要理解jQuery的Ajax方法`$.ajax()`,这...

    ajax从JSP传递对象数组到后台的方法

    在本文中,我们将深入探讨如何使用Ajax从JSP页面向后台服务器传递对象数组。这个过程对于Web应用程序的数据交互至关重要,特别是在需要动态更新数据且不刷新整个页面的情况下。下面,我们将详细解析实现这一功能的...

    前台ajax与后台json传递

    在Web开发中,前后端数据交互是至关重要的一个环节,特别是在动态网页应用中。"前台Ajax与后台Json传递"这个主题就是关注如何高效地实现这一交互过程。Ajax(Asynchronous JavaScript and XML)技术允许我们在不刷新...

    jsp中利用jquery+ajax在前后台之间传递json格式参数.docx

    例如,如果JSON数组包含了地理坐标信息,可以创建一个新的数组`points`,并将每个JSON对象的`lon`和`lat`属性添加到数组中,以备后续的地理位置处理。 总结来说,通过jQuery的AJAX功能,前后台间可以方便地传递JSON...

    js传递数组参数到后台controller的方法

    在JavaScript(JS)中,将数组作为参数传递到后端控制器(如在Java Spring MVC、ASP.NET MVC或Node.js Express等框架中)是一项常见的任务。本文将详细介绍如何实现这一过程,以及涉及的关键知识点。 首先,我们...

    List转换成String数组

    - 这种方法与第一种方法类似,只是省略了`toArray()`方法中的参数传递,直接将数组传递给该方法即可。 **方法三:使用空数组作为参数** ```java List&lt;String&gt; list = new ArrayList(); list.add("a1"); list.add(...

    Java中前台往后台传递多个id参数的实例

    Java中前台往后台传递多个id参数的实例 在 Java 中,前台往后台传递多个 id 参数是非常常见的场景...这个实例展示了如何在 Java 中前台往后台传递多个 id 参数,包括前台 JS 代码的处理、后台的处理和Ajax请求的处理。

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

    jQuery中的AJAX请求是一种非常常见的前端异步数据交互方式,它的作用是使得页面无需重新加载即可向服务器请求数据,并将数据动态地加载到页面中。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它...

    利用ajax传递数组及后台接收的方法详解

    当后端接收到这个请求后,会需要解析JSON字符串以获取数组中的数据。在Java中,可以使用@RequestBody注解直接将请求体中的JSON字符串反序列化为数组或者列表对象。但文档中提到,这种方法较为繁琐。另一种简便的方法...

    ajax解决中文乱码(java/jsp)

    在后端(即服务器端),我们需要对接收到的请求参数进行解码,以还原出原始的中文字符。 ##### 参数接收 ```java String name = request.getParameter("name"); ``` 这里的`name`参数就是通过前端编码之后再传递...

    java实现gzip ajax请求gzip压缩

    本文将深入探讨如何在Java后端实现对gzip压缩的处理,以便于Ajax请求能够正确地进行gzip压缩通信。 首先,我们需要理解gzip压缩的工作原理。gzip是一种基于DEFLATE算法的压缩格式,它会将连续的数据流分成多个块...

    jQuery的Ajax实现异步传输List、Map

    在这个例子中,`data`参数是一个包含List和Map的对象,它们会被自动转换成JSON格式并作为POST请求的主体发送。在服务器端,你需要处理这些JSON数据,将其转换回List和Map,然后进行业务逻辑处理。 在服务器端,你...

Global site tag (gtag.js) - Google Analytics