ajax請求發陣列引數,後臺接收
背景:ajax請求,發陣列引數,後臺springmvc
前端寫法:
function toAuthorization(uuid){
var opt = {
title:'設定類別',
url:'${ctx}/developer/laozicloud/purchasecomputeorder/authorization?uuid='+uuid,
buttons: {
confirm: {
label: '確定',
className: 'btn btn-primary btn-w-m',
callback: function () {
var uuid = $("#uuid").val();
var computeCodes = [];
var computeCodeObj = $("input[name='computeCodes']");
if(computeCodeObj.length == 0){
$("#error").text("授權碼不能為空");
$("input[name='computeCodes']")[0].focus();
return false;
}else{
$("#error").text("");
}
if(computeCodeObj.length >0){
var len = computeCodeObj.length;
for(var i=0;i<len;i++){
computeCodes[i] = computeCodeObj[i].value;
}
}
$.ajax({
url:'${ctx}/developer/laozicloud/purchasecomputeorder/saveAuthorization',
type:'post',
traditional: true,
data:{
'computeCodes':computeCodes,
'uuid':uuid
},
success:function(data){
if (data == '0'){//未登入
window.top.location.href = $ctx+$sysConstant.LOGIN_URL;
}else{
swal({
type: 'success',
text:'操作成功',
allowOutsideClick:false
}).then(function(){
$.vssware.doQuery('formId','#content',false,'#pageForm');
});
}
},
error:function(data){
alert(data);
swal({
type: 'error',
text:'操作失敗',
allowOutsideClick:false
});
}
});
return true;
}
}
}
};
$.vssware.generateModal(opt);
}
這裡前端是bootstrap 彈窗 儲存發的ajax請求,獲取引數都一樣。主要是將引數傳送到後臺這裡要注意下:
//定義一個數組,用來存放參數
var computeCodes = [];
//對引數進行賦值,直接採用下標即可
computeCodes【0】='test';
//發請求
$.ajax({
url:'${ctx}/developer/laozicloud/purchasecomputeorder/saveAuthorization',
type:'post',
traditional: true,//這個引數必須要加,反深度序列化的,加之前p=[a,b]加之後p=a&p=b這樣後臺才能拿到
data:{
'computeCodes':computeCodes,
'uuid':uuid
},
後臺:
@ResponseBody
@RequestMapping("/saveAuthorization")
public String saveAuthorization(String uuid,String[] computeCodes
PurchaseComputeOrder order = getPurchaseComputeOrderService().find(uuid);
EnterpriseCompute compute = order.getCompute();
if(computeCodes != null && computeCodes.length>0) {
List<String> list= Arrays.asList(computeCodes); //將陣列轉化成list,這裡的物件是Array&ArrayList
compute.setComputeCodes(new ArrayList<>(list));//這裡是轉化成Arraylist物件,這樣儲存後底層在呼叫list.remove方法才不會丟擲unsupported exception
}
enterpriseComputeService.merge(compute);
order.setCompute(compute);
getPurchaseComputeOrderService().merge(order);
return "success";
}