需要帮助解析 jquery 数据表编辑器数据
Need help parsing jquery datatables editor data
我从 jquery 数据表编辑器 Datatables Editor 收到了一种数据格式,它看起来像下面的格式,我需要解析它以便将其存储到数据库中,但我有没有想出这样做的方法。
{ action: 'edit',
'data[1][Name]': 'Some Text ',
'data[1][Rating]': '1',
'data[1][Division]': 'Some Text '
}
使用 javascript 解析这种形式的数据的最佳方法是什么?编辑器库带有一个用于解析数据的 php 库,但我在后端使用 nodejs/
如果你想将 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 []
并将该括号的内容作为 属性 名称的文字。我一点也不认为这是最好的方法。
我有新的方法,也许更系统一些,它排除了正则表达式字符串中的“[]”字符的风险。很简单的方法就是使用自定义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' } } }
我从 jquery 数据表编辑器 Datatables Editor 收到了一种数据格式,它看起来像下面的格式,我需要解析它以便将其存储到数据库中,但我有没有想出这样做的方法。
{ action: 'edit',
'data[1][Name]': 'Some Text ',
'data[1][Rating]': '1',
'data[1][Division]': 'Some Text '
}
使用 javascript 解析这种形式的数据的最佳方法是什么?编辑器库带有一个用于解析数据的 php 库,但我在后端使用 nodejs/
如果你想将 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 []
并将该括号的内容作为 属性 名称的文字。我一点也不认为这是最好的方法。
我有新的方法,也许更系统一些,它排除了正则表达式字符串中的“[]”字符的风险。很简单的方法就是使用自定义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' } } }