ajax从前台向后台传数组问题

哈喽大家好:我是沈阳爱尚java培训的蔡老师,今天给大家带来的是ajax从前台向后台传数组问题的分析和详解。

欢迎使用Markdown编辑器

//批量删除
$(‘body’).on(“click”, “#deleteBatch”, function () {
var cbs = KaTeX parse error: Expected '}', got 'EOF' at end of input: …h; i++){ if((cbs[i]).prop(“checked”)){
var q = ( c b s [ i ] ) . p a r e n t ( ) . p a r e n t ( ) . c h i l d r e n ( ) ; q = N u m b e r ( (cbs[i]).parent().parent().children(); q = Number( (cbs[i]).parent().parent().children();q=Number((q[q.length-1]).html());
cbsArr.push(q);
}
}
cbsArr = toString(cbsArr);
console.log(cbsArr);

	$.ajax({
		url:'NewsDeleteBatchServlet',
		type:'post',
		async:true,
		//ajax的traditional属性
		//traditional:true,
		data:{
			cbsArr:cbsArr
		},
		success:function(){
			//window.location.replace('NewsTablePage.jsp');
		}
	})
})

通过勾选复选框,获取参数,进行批量操作.
jq获取的是集合或者数组,通过ajax传递到后台,后台使用 req.getParameter( ) 去接收这个参数,结果发现无法获取,得到的是 null.
经过在网络上搜索之后,发现了 解决方法
方案一: ajax的data属性要为String格式,我们可以先把代码中的cbsArr先改为String类型,然后再往后传参数.可以仿照JAVA中的Arrays.toString()来写一个.也就是:

function toString(arr){
var b = ‘’;
for(var i = 0 ; i < arr.length ;i++){
if(arr[i] != null){
b = b +"’"+ arr[i] +"’";
if( i == arr.length-1){
return b;
}
b = b + ‘,’;
}
}
}
这样,后台就可以得到了数据了
方案二: 我们可以为ajax添加一个traditional:true 属性.
traditional:true
查询这个属性得知,这个属性默认是false,jquery会深度序列化这个对象,以适应PHP等框架,我们可以通过设置tradtional为true阻止深度序列化
设置traditional属性后,data就可以传递集合或数组的类型了.后台要通过
String[] arrs = req.getParameterValues(“cbsArr”);
getParameterValues来接收数组或集合参数.
这样以后碰到复选框传多个id的时候就不用前台拼后台spilt了或者toString了,直接用ajax的traditional属性,传过去一个数组,后台直接一个List idList接受即可。非常方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值