jquery ajax 传递数组 后台怎么接

$.ajax({
type:"post",
datatype:"json",
data:我要传的数组,
url:...
})
如果我这么写没错的话 在action的后台我怎么接我要传的数组?最好有代码写出来提示一下 不太懂= =谢谢
最新回答
ら眼眸里的温柔

2024-09-15 00:57:40

无论哪种方式,提交到后台的都只能是字符串的形式,可以在后台分离也可以在前台组装。

$.ajax({
type:"post",
data:我要传的数组,
url:...
})

首先,“我要传的数组”那里的格式应该是,data:'data=1&data=2&data=3...'这种形式,然后在后台用String[] params =request.getParameterValues("data");方式就可以取到了。如果是action,还可以用List<String> data来直接获取,记得写set,get方法。
风铃仙子

2024-09-15 02:30:21

php函数
$json_array = json_decode($json, true);
爱你这出戏请给我一些台词

2024-09-15 01:50:04

页面Javascript代码:
function loadSlide(type,id,size,path){
$.ajax({
url:path+"loadSlideArticle.action?r="+Math.random(),
type:"post",
data:{"cid":id,"type":type,"size":size},
dataType:"json",
success:function(d){
var str='';
$(d).each(function(){
str+='<tr><td height="5"></td></tr><tr ><td align=left colspan="2"><font color="#CACACA" size="2"><b>·</b></font><a href="'+path+this.linkPath+'" title="'+this.title+"" target="_blank">'+this.title+'</a> </td></tr>'
});
$("#"+type).html(str);
}
});
}

这个是action中的处理代码:

public String loadSlideArticle() throws Exception {
String cid = request.getParameter("cid");
String type = request.getParameter("type");
String size = request.getParameter("size");
List<ArticleVO> list = service.loadSlideArticle(type, cid, size);
String json = "[";
for (ArticleVO vo : list) {
json += "{\"title\":\"" + vo.getTitle().replace("\"", "“") + "\",\"pubTime\":\""
+ vo.getPubTime() + "\",\"linkPath\":\"" + vo.getLinkPath()
+ "\",\"pic\":\"" + vo.getSmallPic() + "\"},";
}
if (json.length() > 2) {
json = json.substring(0, json.length() - 1);
}
json += "]";
ServletActionContext.getResponse().setCharacterEncoding("UTF-8");
ServletActionContext.getResponse().getWriter().write(json);
return this.NONE;
}
冷巷。

2024-09-15 02:19:22

数组估计不行 把你的数组转成字符串 再在action里面写一个set方法就可以得到
追问
关键是我再action怎么接到ajax的数组啊?
追答
你得到数组转成的字符串再在java里面转成数组
怎么接?就在action里面写一个该属性的set方法就可以了,刚开始不就说了
锁骨草莓印

2024-09-15 00:31:08

需要在request里面去取
追问
request.getparameter()?
追答
貌似是这个方法吧,忘记了,就是你提交表单的时候在后台取数据那方法,一样的。
追问
那后台用String接?
追答
不是有个取数组的方法么?
追问
什么方法啊?能方便打出代码来么= =谢谢了....
追答
刚看了下,getParameterValues应该是这个方法,getParameter是取字符串的,getParameterValues是取字符串数组的。
追问
能接到长度了 但是调试代码的时候发现data传的有问题 后台接的是undefined
追答
看了楼下的回答才想起,话说你数组是怎样的?不会是js数组吧。。。
追问
是....var 的数组...
追答
我的失误,改成字符串吧,后台接收过后再来拆分字符串;或者可以试试用同一个参数名来表示数组的所有数据,理论上可以表示一数组,不过我没试过~~比如你数组是{1,2,3,4},参数名是arr,那你写成data:{arr:1,arr:2,arr:3,arr:4}
追问
我的数组是循环加入的push进去的 不是声明的...
追答
那还是前台组装成字符串吧,再后台再拆分。。。