话不多少,这个必须记下来!
使用场景是在做删除功能的时候,先要获取删除表格行的id,然后通过ajax提交到后台,ajax代码如下
var arr = new Array();
$checkOne.each(function(){
var $id = $(this).parent().parent().next();
arr.push($id.text());
});
$.ajax({
type : "post",
url : "/PCMS/item_delete.action",
data : {"arr" : arr},
success : function(){
alert("success");
closeDelete();
},
error : function(){
alert("error");
}
});
arr对象已经确定有值,然后提交到后台的struts2 action处理
public class Action{
private Object arr;
public Object getArr() {
return arr;
}
public void setArr(String arr) {
this.arr = arr;
}
public String delete(){
System.out.println(arr);
return "delete";
}
}
在delete方法中打印为null,但是前台对象中是有值的。补充一点,如果前台代码改成
data : {"arr" : "this is arr"},
delete方法可以正常打印,说明字符串作为json数据的值,可以在后台取出。
后来发现,只要在ajax代码段中加入traditional : true,这个属性就可以顺利传递数组。
如果你想要用传统的方式来序列化数据,那么就设置为 true