我正在尝试从jQuery post数据中获取orignal DOM元素,如下所示:
.done(function (data) {
if (data !== "UsernameError") {
StopLoading();
var dbtb = $('<table />').append(data).find('#datatable-responsive').html();
// Convert the table into a javascript object
var table = $(data).find('#datatable-responsive').get(0).tableToJSON();
console.log(table);
$('#datatable-responsive').dataTable({"bDestroy": true});
var header = $('<div />').append(data).find('.bs-glyphicons').html();
$('.bs-glyphicons').html(header);
$('#tableProducts thead, #header').fadeIn("slow");
$('#emptyText').hide();
}
else {
StopLoading();
ShowMessage("No eBay user was found under: " + $('.txtSearch').val());
}
})
这是有问题的部分:
var table = $(data).find('#datatable-responsive').get(0).tableToJSON(); // Convert the table into a javascript object
console.log(table);
我正在使用jQuery扩展表到json库将html转换为JSON,然后将其提取到数据表中。由于datatable只接受JSON作为数据源,我需要以某种方式转换它。
当我这样做时:
$(data).find('#datatable-responsive').get(0)
这会返回原始DOM元素(它自己的表),但是,表到json只接受实际的选择器作为第一个参数,如下所示:
$('#tableid').tableToJSON(); <<< correct way
对于我来取实用表:
$(data).find('#datatable-responsive').get(0).tableToJSON()
or
$(data).find('#datatable-responsive')[0].tableToJSON()
上述两种方法给出了以下错误:
Error: tableToJSON is not a function
我该如何解决这个问题?
@Rajaprahbu使用时:
console.log($(data).find('#datatable-responsive').eq(0));
我正在获取对象而不是本机DOM元素......仍然是:/
Edit2:这是插件本身的链接:
https://github.com/lightswitch05/table-to-json
答案 0 :(得分:0)
你的例子在这里和那里都是一个小细节。
console.log($(data).find('#datatable-responsive').eq(0));
确实会返回一个jQuery对象,而不是一个DOM元素,但这就是你需要的。
$(data).find('#datatable-responsive').get(0)
和$(data).find(&#39; #datatable-responsive&#39;)[0]`都返回一个DOM元素但是不是你是什么的需要的。
应该简单地说:
var table = $(data).find('#datatable-responsive').tableToJSON();
应该通过返回空白结果来满足不匹配,或者返回表格的JSON。
其他选项包括:
var table = $(data).find('#datatable-responsive').eq(0).tableToJSON();
var table = $(data).find('#datatable-responsive').first().tableToJSON();
.get(0)
返回jQuery集合中的第一个DOM元素。 [0]
也是如此。 .eq(0)
返回jQuery集合中的第一个DOM元素,但包含在自己的jQuery对象中。 $(data)
只是将您加载的内容转换为分离的DOM元素。