1. 程式人生 > >ajax請求發陣列引數,後臺接收

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

,HttpServletRequest request) {
        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";
    }