Javascript 在通过ajax post发送之前,将附加数据附加到序列化的表单数据

Javascript 在通过ajax post发送之前,将附加数据附加到序列化的表单数据,javascript,java,jquery,ajax,spring-mvc,Javascript,Java,Jquery,Ajax,Spring Mvc,在使用ajax post方法将表单数据发布到控制器时,我遇到了困难。以下是我的要求, 域类: public class Bill implements Serializable{ private String appointmentId; private long billAmount; private long paidAmount; private String discount; private long dueAmount; private String modeOfPayment;

在使用ajax post方法将表单数据发布到控制器时,我遇到了困难。以下是我的要求,

域类:

public class Bill implements Serializable{

private String appointmentId;
private long billAmount;
private long paidAmount;
private String discount;
private long dueAmount;
private String modeOfPayment;

List<ServicePackage> packageList =new ArrayList<ServicePackage>();

//Many more fields and their Corresponding getters and setters//

}
public class ServicePackage implements Serializable{


private String packageName;
private String packageCode;
private long packageCost;

//Many other along with the corresponding getters and setters//

}
Jsp代码:当用户需要添加更多行(下面未包括)时,为了克隆行,还有一些逻辑

任何帮助或建议都会有帮助。请帮我解决这个问题。提前感谢。

$('input#saveButton')。打开('click',函数(e){
$('input#saveButton').on('click', function(e){
    //Getting the package names and adding into a list.
    var rows=$("#packages tbody tr.packageRow").length;
    var packageList= [];
    for(i=0;i<rows;i++){
        var packId=$('[name="packageNames['+i+']"]').val();
        var pack = {"packageId": packId};
        packageList.push(pack);

    }

    packageList = JSON.stringify(packageList); 

    //Form Data of id billForm//                        
    var billData=$('form#billForm').serialize();

    billData.packageList = packageList;
    $.ajax({
          type: "POST",
          url: "/LoginMavenSpringMVC/billing/save",
          data: billData,
          success: function(response){
            console.log("Succeeded");
         },
          error: function(e){
          alert('Error: ' + e);
          }
       });

})
//获取包名并添加到列表中。 变量行=$(“#packagest body tr.packageRow”).长度; var packageList=[]; 对于(i=0;i您可以这样尝试

 packageList = JSON.stringify(packageList); 

        //Form Data of id billForm//                        
        var billData=$('form#billForm').serialize();
       //Appending additional data with formData
        var dataToSend =  $.extend(billData,packageList);
        $.ajax({
              type: "POST",
              url: "/LoginMavenSpringMVC/billing/save",
              data: dataToSend,
              success: function(response){
                console.log("Succeeded");
             },
              error: function(e){
              alert('Error: ' + e);
              }
           });

谢谢你的回答,但它对我不起作用。控制器中也有什么需要更改的吗?
@RequestMapping(value="/save")
public @ResponseBody String save(@ModelAttribute(value="bill")Bill bill, ModelMap model){

    System.out.println("BillAmount: "+bill.getBillAmount());
    System.out.println("Amount Paid : "+bill.getPaidAmount());
    System.out.println("DueAmount: "+bill.getBillingDate());

    for(ServicePackage pack:bill.getPackageList()){
        System.out.println("Package "+pack.getPackageId());

    }
return "Successfully Executed";
}
$('input#saveButton').on('click', function(e){
    //Getting the package names and adding into a list.
    var rows=$("#packages tbody tr.packageRow").length;
    var packageList= [];
    for(i=0;i<rows;i++){
        var packId=$('[name="packageNames['+i+']"]').val();
        var pack = {"packageId": packId};
        packageList.push(pack);

    }

    packageList = JSON.stringify(packageList); 

    //Form Data of id billForm//                        
    var billData=$('form#billForm').serialize();

    billData.packageList = packageList;
    $.ajax({
          type: "POST",
          url: "/LoginMavenSpringMVC/billing/save",
          data: billData,
          success: function(response){
            console.log("Succeeded");
         },
          error: function(e){
          alert('Error: ' + e);
          }
       });

})
 packageList = JSON.stringify(packageList); 

        //Form Data of id billForm//                        
        var billData=$('form#billForm').serialize();
       //Appending additional data with formData
        var dataToSend =  $.extend(billData,packageList);
        $.ajax({
              type: "POST",
              url: "/LoginMavenSpringMVC/billing/save",
              data: dataToSend,
              success: function(response){
                console.log("Succeeded");
             },
              error: function(e){
              alert('Error: ' + e);
              }
           });