微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ajax传递数组 用struts2来接收

在做web应用时很多时候会遇到批量操作的情况,如批量删除某些记录。这时需要将所需删除的记录的id组成的数组发送给后台进行处理,这里将这些id发送给后台的方式很多,比如:将id组成使用,或其他符号分隔开的字符串,后台拿到这个字符串按照相应的分割方式将字符串分割然后获得这些id。

这里前端使用ajax的方式,后端使用struts2,通过ajax将数组发送给action。

前端jsp中的javascript代码(这里使用了easyui):

  1. var rows = $("#articlelist").datagrid('getSelections');
  2. if(rows.length==0){
  3. $.messager.alert('提示','请选择所需删除的记录!');
  4. return false;
  5. }
  6. var ids=[];
  7. for (var i = 0; i < rows.length; i++) {
  8. var id=rows[i].id; //取出id值
  9. ids.push(id); //将id值放入数组中
  10. }
  11. var params = $.param({'ids':ids},true);
  12. var url = 'articlemgmt/articleAction_deleteBatch';
  13. $.messager.confirm('提示', '确定删除?', function(r){
  14. if(r){
  15. $.ajax({
  16. url : url,
  17. data: params,
  18. cache : false,
  19. async : false,
  20. type : "POST",
  21. dataType : 'json',
  22. success : function (result){
  23. <span style="white-space:pre"> </span>//成功处理
  24. }
  25. });
  26. }
  27. });


这里使用到了jquery的param方法,该方法是将表单元素数组或者对象序列化。是.serialize()的核心方法

obj:数组或jQuery对象会按照name/value对进行序列化,普通对象按照key/value对进行序列化。

Traditional:是否使用传统的方式浅层序列化。

jQuery 代码:
  1. var params = { width:1680, height:1050 };
  2. var str = jQuery.param(params);
  3. $("#results").text(str);
结果:
width=1680&height=1050

Action中List的定义:

通过使用param方法的处理,在action中ids的类型不管是数组还是list都能够正确的接收到这些id了。

private ArrayList<Integer> ids;
ps:一定不要忘了setter方法




版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐