【问题标题】:Need help parsing jquery datatables editor data需要帮助解析 jquery 数据表编辑器数据
【发布时间】:2015-10-08 07:07:52
【问题描述】:

我有一个从 jquery 数据表编辑器Datatables Editor 收到的数据格式,它看起来像下面的格式,我需要对其进行解析,以便将其存储到 db 中,但我还没有找到这样做的方法.

 { action: 'edit',
     'data[1][Name]': 'Some Text ',
     'data[1][Rating]': '1',
     'data[1][Division]': 'Some Text '
 } 

使用 javascript 解析这种形式的数据的最佳方法是什么?编辑器库附带一个用于解析数据的 php 库,但我使用 nodejs 作为后端/

【问题讨论】:

    标签: javascript jquery node.js datatables jquery-datatables-editor


    【解决方案1】:

    如果你想将data[] 转换成文字,你可以这样做:

    var prop, fieldName, literal = {};
    for (prop in data) {
        if (prop != 'action') {
            fieldName = prop.match(/\[(.*?)\]/g)[1].replace(/\]|\[/g,'');
            literal[fieldName] = data[prop];
        } 
    }
    

    demo。它会产生一个像

    {Name: "Some Text ", Rating: "1", Division: "Some Text "}
    

    例如可以用于插入到 mongodb 中。

    它只是遍历数据,提取每个#2 [] 并将该括号的内容作为属性名称传递给文字。我根本不认为这是最好的方法。

    【讨论】:

    • 谢谢,我也得出了同样的结论。我在 underscopre 中运行了一个 each 循环,并使用正则表达式来更改名称。
    • @Bazinga777 - 好的,那么它不可能完全愚蠢:) 'data[1][Division]' 等输入有点奇怪,没有真正好的速记将其转换为任何东西。
    【解决方案2】:

    我有新的可能更系统的方法,它排除了正则表达式字符串中 '[]' 字符的风险。很简单的方法就是使用自定义ajax,我用的是自己的数据:

    const editor = new $.fn.dataTable.Editor({
        ajax: (method, url, data, success, error) => {           
            $.ajax({
                type: 'POST',
                url: '/updateproductcode',
                data: JSON.stringify(data),
                success: (json) => {
                    success(json);
                },
                error: (xhr, error, thrown) => {
                    error(xhr, error, thrown);
                }
            });
        },
        table: '#mytable',
        idSrc: 'productcode',
        fields: ...
    

    然后在服务器端收到对象,其键是您的字符串化数据:

    {'{"action":"edit","data":{"08588001339265":{"productcode":"08588001339265","name":"does_not_existasdfadsf","pdkname":"Prokain Penicilin G 1.5 Biotika ims.inj.s.10x1.5MU","suklcode":"0201964","pdkcode":"2895002"}
    }:''}
    

    如果你用JSON.parse(Object.keys(req.body)[0])解析它的键,你会得到你的结果:

    { action: 'edit',
      data:
       { '08588001339265':
          { productcode: '08588001339265',
            name: 'does_not_existasdfadsf',
            pdkname: 'Prokain Penicilin G 1.5 Biotika ims.inj.s.10x1.5MU',
            suklcode: '0201964',
            pdkcode: '2895002' } } }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多