`

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 向后台传递数组参数示例

    在JS中向后台传递数组参数 分析: JS中的数组是弱类型的可以放任何类型(对象、基本类型),但是如果数组中放的是对象类型,传递到后台是显示的只能是对象字符串–[object Object],原因如下: 在后台接收的时候,...

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

    在使用MVC时,向服务器端发送POST请求时有时需要传递数组作为参数值,下面通过实例代码给大家介绍jQuery Ajax向服务端传递数组参数值的方法,一起看看吧

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

    前端使用jquery向后台传递数组类型的参数,Java后台直接通过List类型接收,会发现无法取到参数。

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

    google搜到的。我看大神的文章发布时间是2014年5月。亲测好用。 某度搜技术类的真真真心不行。

    jsp网页产生json传值到java的servlet,再回传到jsp页面

    jsp网页通过ajax传递json数据到java的servlet中,servlet处理数据后回传json数据到jsp页面

    java6_chapter912_ajax_jquery2019-8-21.zip

    第一种方式实现ajax异步刷新--ajax 2.需求2: 第二种方式实现ajax异步刷新--get 3.需求3: 第三种方式实现ajax异步刷新--post 4.需求4: 第四种方式实现ajax异步刷新--getJSON 5.需求5: 第五种 使用jquery发送...

    jquery与java交互通过json传递数据的经典实例

    jquery与java交互通过json传递数据的经典实例,必备,不可多得

    java面试宝典

    21、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 10 22、我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,...

    Java面试宝典2020修订版V1.0.1.doc

    21、数组中有没有length()方法,String中有没有length()方法? 18 23、final, finally, finalize的区别。 18 24、‘==’和equals的区别? 18 25、JAVA中Object类中有哪些常用方法? 19 26、heap和stack有什么区别...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    6.6.2 读取数组中的数据 6.7 疑难解惑 6.7.1 JSTL的优点 6.7.2 JSTL和EL的关系 6.8 精彩回顾 第7章 动态网站之灵魂 ——数据库应用开发 7.1 本章学习任务 7.1.1 本章知识体系. 7.1.2 实例开发任务 7.2 My SQL数据库...

    Java面试宝典-经典

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    Java面试宝典2010版

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    JavaScript完全自学宝典 源代码

    ajaxmodel.war Ajax实例应用的项目文件(可直接在Tomcat中发布运行)。 \ajaxmodel\amel\html\firstAjax.jsp 显示XMLHttpRequest对象状态。 \ajaxmodel\amel\html\userReg.html 完成验证的客户端页面。...

    java面试题大全(2012版)

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    《javaScrip开发技术大全》源代码

    • sample13.htm in运算符在数组中的使用 • sample14.htm instanceof运算符 • sample15.htm new运算符 • sample16.htm this运算符 • sample17.htm this运算符 • ...

    最新Java面试宝典pdf版

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    DWR.xml配置文件说明书(含源码)

    从java中传递null值到javascript是没有任何危险性的,所以DWR将这个作为默认的converter,所以你自己不用再把这个converter添加到配置文件的部分中去. 基本类型的converter转换int,boolean,double等.当然还包括对应的...

    Java面试笔试资料大全

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    xheditor-1.1.14

    说明:通过本参数,在非标准submit提交环境下,比如AJAX提交,可以由用户点击提交按钮以触发编辑器最新值的同步 备注:v1.1.7新添加 onPaste:剪切板粘贴回调函数 参数值:用户粘贴后需要执行的函数 说明:此函数...

Global site tag (gtag.js) - Google Analytics