【问题标题】:x-editable submit additional "array" to the total AJax POST datax-editable 向总 AJax POST 数据提交额外的“数组”
【发布时间】:2016-06-24 13:36:18
【问题描述】:

我正在尝试在我的 jsp 页面中将一组对象添加到一组 bootstrap x-editable 的发布数据中。

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

我有一个 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;
};

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

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 输出是没有数组的。仅提交“可编辑”数据,但没有添加该值数组的“受益人”字段。缺少的字段必须像

"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),它接收一个模型视图对象(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

在控制台中,我获得了那个声音的正确对象

但不是在类似的帖子对象中

相反,我需要生成的输出“受益人”字段到 POST url 类似于这个示例(在互联网上找到)

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

【问题讨论】:

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


    【解决方案1】:

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

    您的代码应如下所示:

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

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

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

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

    【讨论】:

    • 即使这样做,也不行。我在 document.ready() 方法中编写了 $('#data a').editable({ params: function(params) { params.beneficiary = recover_data(); return params; } });但是不工作......输出POST请求中不存在数组......并且没有启动方法recover_data()(我在控制台中看不到任何输出)......
    • @Domenico 检查小提琴
    • 尤里,感谢您付出的所有努力和时间!我检查了小提琴,但输出不是我需要的。我需要输出是一个json,就像一个名为“beneficiary”的字段,它是一个对象数组,对象有两个字段“company”和“num”..一个列表。因为我为我的 java servlet 使用了一个 modelView,它需要一个“ArrayList 受益人”,其中 Beneficiary 是我在此处描述的具有两个字段的对象。我怎样才能获得该列表?
    • 把你的函数写成data: {beneficiary: recover_data()}
    • 您永远不会在 POST 数据中看到类似元素的对象。 POST 数据是一个数组,附加到它的任何东西都是一个数组。我提供的示例实际上是正确的,您可以使用$post = $_POST['beneficiary']; 阅读它;那么您可以将 $post 用作包含所有数据的数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 2015-05-23
    相关资源
    最近更新 更多