日期:2014-05-16  浏览次数:20362 次

js数组传入后台非ajax实现
以前是通过AJAX从后台数据显示在页面,每条数据前加入一个checkbox,方便多条记录选择,而所有通过AJAX取得的数据都通过documnet,write写在一个form表单下,所以,非常容易解决通过checkbox选择的数据提交给后台处理,原项目使用struts1.2,现在基本上都用struts2了,可以通过一个动态DynaActionForm来获取页面表单数组数据,如

<input type="checkbox" name="ids" value='通过ajax取得的数据ID'/>

在struts-config.xml文件中配置

<form-bean name="userPayForm" type="org.apache.struts.action.DynaActionForm" >
          <form-property name="ids" type="java.lang.String[]"/>
    </form-bean>

把userPayForm和对应的处理提交的ACTION建立映射关系,在该action里面的代码:

DynaActionForm dysForm = (DynaActionForm) form;

String [] ids = (String[]) dysForm.get("ids");

就可以获得页面被选择的checkbox里面的value了,

而我现在要说的是该checkbox不在form 表单里面,而是通过该s实现把该checkbox选中的值传入一个页面一个form表单(一个页面可能有多个form表单),通过这个表单传入后台进行处理。

关于表单进行传值,你可能会想到使用隐藏域,现在就说下,怎么使用隐藏域把一个表单中checkbox选中的值通过另外一个表单传入后台的解决方法。这当然要使用javascript代码了。

1.首先就是用Js获得checkbox被选中的值,

function get_checkbox_value(){
    var a = document.getElementsByName('v_sids');//chebox的name值
   var sids = document.getElementById('sids');//另外一个表单的隐藏域<input type='hidden' id ='sids' name='sids'>

for(var i = 0;i<a.length; i++){
      if(a[i].checked==true)
      {
        sids.value += a[i].value+",";//用‘,’对数据进行隔离并合并成一个字符串
      }
}

2.后台获取表单数据,由于sids的值是一个用‘,’隔开的字符串值,在后台要进行数据拆分,

String ids = request.getParameter("ids");//通过request对象取得页面提交表单中的name值为ids的值。

String[] v_ids= ids.split(",");//进行使用','进行拆分,成为一个数组。

下面就可以对该数组进行业务逻辑处理了。

(借用他人,仅供方便学习)