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传递的实现方式还是正确的,对于不传递数组,只传递变量的情况,还是可以参考的。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, string
, 测试
, list
, loginaction
, 位置
, 页面提交string数组
, write
, 疑惑
, 数组传递
, 传递数组
ajax传递数组
redux 异步action、redux 异步action实例、异步action、mvc 异步action、c action 异步,以便于您获取更多的相关知识。

时间: 2024-12-02 13:49:35

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

利用RegisterStartupScript执行js怎么传递在代码中数组 js中又该如何接

问题描述 在代码中有数组需要传递给js怎么传递js中如何接js中需要弹出一窗口又如何把数组传递给该窗口 解决方案 解决方案二:可以通过showModalDialog的第二个参数来传入参数,也可以通过url来传递.

js ajax传递的对象中有数组后台怎么接收

问题描述 js ajax传递的对象中有数组后台怎么接收 {t1:'aa',t2:['a','b']} 我用jquery ajax向后台传对象,对象里面有数组,在后台怎么正确接收数组. 解决方案 spring mvc 接收ajax传递来的数组对象 解决方案二: 什么语言?找你使用的服务器端语言,一般都有对应的json反序列化对象,如asp.net的json.net {}对应类,[]对应数组 解决方案三: 接收整个json之后取出t2,然后强转为数组 解决方案四: 得看用什么方式把字符串转为对象.g

我在SQL里面读取出来的相关信息,如果传递到JS里面的数组呢???

问题描述 我在SQL里面读取出来的相关信息,如果传递到JS里面的数组呢??? 你好,我想利用百度API开发地图应用,首先我不是专业搞开发的.我在SQL里面读取出来的相关信息,如果传递到JS里面的数组呢??? 解决方案 看你前端使用的是什么技术,如何是JSP的话 <% String data=xxxx.xxx();//调用后台方法,查询数据库,返回数据 %> var d=<%=data%>;

springmvc jquery传递数组,

问题描述 springmvc jquery传递数组, 代码目的是把前台被选中的选项的id存入数组,再将数组传给input.通过form提交,在控制器拦截到并接收这个数组. 但是我现在接收到的是一个字符串. 同样的前台页面与拦截器代码.在另外一台笔记本上接收的是一个id数组.搞不清为啥 恳请各位解答 以下是源码.前台 1.<!DOCTYPE html > <!--zui.js,jQuery.js用于菜单的展现--> 问卷详情 ${survey.description} $(docum

复杂类型javabean(数组成员)在jsp中的运用:在jsp页面间传递数组

js|数组|页面 在论坛上常看见有人问如何在jsp页面间传递数组,其实用javabean是很容易实现的. 下面给个简单的例子,只要遵循javabean的游戏规则,什么类型的数据结构都可以传递: 1:写一个测试用的javabean:package com.infoearth;public class JobBean{private int[] b;  /**  * @return 返回 b.  */ public int[] getB() {  return b; } /**  * @param

Node.js 异步编程之 Callback介绍(一)

 这篇文章主要介绍了Node.js 异步编程之 Callback介绍(一),本文用实例讲解Callback的相关知识,本文是第一篇,下一篇小编会跟进,需要的朋友可以参考下     Node.js 基于 JavaScript 引擎 v8,是单线程的.Node.js 采用了与通常 Web 上的 JavaScript 异步编程的方式来处理会造成阻塞的I/O操作.在 Node.js 中读取文件.访问数据库.网络请求等等都有可能是异步的.对于 Node.js 新人或者从其他语言背景迁移到 Node.js

Node.js 异步编程之 Callback介绍(一)_node.js

Node.js 基于 JavaScript 引擎 v8,是单线程的.Node.js 采用了与通常 Web 上的 JavaScript 异步编程的方式来处理会造成阻塞的I/O操作.在 Node.js 中读取文件.访问数据库.网络请求等等都有可能是异步的.对于 Node.js 新人或者从其他语言背景迁移到 Node.js 上的开发者来说,异步编程是比较痛苦的一部分.本章将由浅入深为大家讲解 Node.js 异步编程的方方面面.从最基础的 callback 到 thunk.Promise.co 直到

jquery.form.js异步上传完图片在post表单为啥post不了

问题描述 jquery.form.js异步上传完图片在post表单为啥post不了 下面是一个post表单 @using (Ajax.BeginForm("AddNewsInfoModel", "AdminNewsList", new AjaxOptions() { HttpMethod = "post", OnSuccess = "afterAdd" }, new { id = "Form1" })) {

大叔也说Xamarin~Android篇~Activity之间传递数组

原文:大叔也说Xamarin~Android篇~Activity之间传递数组 我们在开发应用程序时,不可能只使用一个Layout或者一个Activity,比如你个管理系统,要求用户先登陆然后再使用,这时你至少要有两个activity吧,先登陆一个,然后成功后需要跳到别一个Activity,这就遇到了多个Activity之间传递数据的问题,这也是今天我们要说的! 先聊聊Activity 首先一个Activity都会去继承Activity类,这个类里有方法已经替我们实现,我们可以把activity看