JS异步传递数组Action接受的实现与疑惑

  最近开发中遇到了页面传递数组到Action后台List类型,接受到的list对象并不是想象的按照数组元素位置对应的接受,例如数组的0位置插入到list对象的0位置,

而是数组的全部内容全部插入到了list集合的第一位置。经过反复的试验,没有找到很好的解决办法,只能把这种粗糙的实现方式记录下来,以求抛砖引玉望大家能给出更好的实现方式。

这是jsp页面代码:异步提交数组到Action中:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script src="plugin/dwz/js/jquery-1.7.2.js" type="text/javascript"></script>
<script type="text/javascript">
    function testceshi(log) {
        var v = new Array();
        v = $(".testname");
        var v1 = new Array();
        for(var i = 0; i < v.length; i++) {
            v1[i] = v[i].value;
        }
        $.ajax({  
        url : "loginAction!testarray",  
        type : "POST",  
        data : "ajaxField=" + v1,  
        success : function(data) {  
        alert(data);  
                }  
        });  
    }
</script>
</head>
<body>
        <form action="loginAction!success" method="post">
        测试<input class="testname" type="text"/><br>
        测试<input class="testname" type="text"/><br>
        测试<input class="testname" type="text"/><br>
        测试<input class="testname" type="text"/><br>
        测试<input class="testname" type="text"/><br>
        <input type="button" value="测试" onclick="testceshi(11)"/>
        </form>
</body>
</html>

 后台java代码:接受页面传递的数组,经过测试数组全部插入到list集合的第一个位置。

@Controller
@Scope("prototype")
public class LoginAction extends ActionSupport {
    private List<String> ajaxField = new ArrayList();
    public void testarray() {
        String str = (String) ajaxField.get(0);
        System.out.println(str);
        List<String> list = new ArrayList<String>();
        String[] strs = str.split(",");
        for (String string : strs) {
            System.out.println(string);
            list.add(string);
        }
        for(int i = 0; i < ajaxField.size(); i++) {
            System.out.println(ajaxField.get(i));
        }    
        HttpServletResponse response = ServletActionContext.getResponse();
        try {
            PrintWriter write = response.getWriter();
            response.setContentType("text/html");
                    write.print("hello");  
                    write.flush();  
                    write.close();  
        } catch (IOException e) {
            e.printStackTrace();
        }
    }        

  虽说实现数组传递的过程有点瑕疵,但是对于异步Ajax传递的实现方式还是正确的,对于不传递数组,只传递变量的情况,还是可以参考的。

转载于:https://www.cnblogs.com/homeOfJain/p/3801341.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值