x-editable向总AJax POST数据提交额外的“数组”

时间:2016-06-24 13:36:19

标签: javascript jquery ajax twitter-bootstrap x-editable

我正在尝试将一个对象数组添加到我的jsp页面中可编辑的一组bootstrap的post数据中。

我从表中恢复数据,并构建一个对象数组。执行此操作后,我需要将此数组附加到页面中可编辑项发布的其他值的列表中。

我有一个id =“user”的html表,这段代码从中恢复数据并构建对象数组。这是我的代码,它可以工作并生成正确的对象:

function recover_data() {
    console.log("Starting recover");
    var beneficiary_list = [];
      $('.lav').each(function() {
        var obj = {'company': $(this).attr('id'), 'num':$(this).text() };
        beneficiary_list.push(obj)   
      });
    console.log(beneficiary_list); //output to check array produced             
    return beneficiary_list;
};

这个函数是我从一个保存按钮调用的,它启动我的全局提交从页面中所有可编辑的数据中检索数据,并以这种方式添加从recovery_data()返回的数组的“params”:

jQuery('#data a').editable('submit',{
        url:'test/prove/data_received',
        params: function(params) {
            params.beneficiary = recover_data();
            return params;
        }, 
        success:function(resp){  ... }

  })

但是使用Postman(Chrome)测试生成的输出到POST,没有数组。仅提交“editables”数据,但没有“受益人”字段,其中包含该值的数组。缺少的字段必须像

"beneficiary": [0: company: "1", num: "22" ..etc..]

如何从一组可编辑的对象数组中“追加”生成的POST数据,就像我展示的一样?

可以查看此页面

Question on github x-editable page

我不明白为什么不起作用......我按照vitalets的第二篇文章写的例子,他写道:

editable({
...
params: function(params) {
    params.checked = ... //get array of checked values
    return params;
}
});

更好地解释我需要的东西:我有一个Java控制器(servlet)接收带有多个字段(来自页面中其他可编辑字段)的modelView对象(PO​​JO)和一个字段“ArrayList受益人”,其中受益人是两个字段“company”和“num”的小对象

public Class Beneficiary{
    private String company;
    private String num;

   //then get e set methods..
} 

相反,我的POJO就像:

import java.util.ArrayList;
import Beneficiary;

public class Module {

    private Integer id;
    private String titolo;
    private String companyRating;
    private ArrayList<Beneficiary> beneficiary;


    //get e set methods

在控制台中,我获得了该语音的正确对象

capture from console

但不在

之类的post对象中

incorrect post

相反,我需要将POST产生的输出“受益人”字段与此示例类似(在互联网上找到)

correct

如何在提交时从我的JSP页面获取该对象的列表? 有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

params是可编辑对象的option,而您将其用作ajax调用的选项。

您的代码应如下所示:

$('#data a').editable({
    url: "/post"
});

然后是submit()(所有可编辑对象的注释选择器):

$('.editable').editable('submit', {
    data: {beneficiary: recover_data()}, 
    success:function(resp){  ... }
});

工作fiddle。检查您的控制台以查看日志