Javascript 从jQuery post数据而不是对象中获取原始元素标记
我试图从jQuery post数据中获取原始DOM元素,如下所示:Javascript 从jQuery post数据而不是对象中获取原始元素标记,javascript,jquery,html,json,Javascript,Jquery,Html,Json,我试图从jQuery post数据中获取原始DOM元素,如下所示: .done(function (data) { if (data !== "UsernameError") { StopLoading(); var dbtb = $('<table />').append(data).find('#datatable-responsive').html(); // Convert the table into a javascript object
.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());
}
})
我使用jQuery扩展表到json库将html转换为json,然后将其提取到datatable中。。因为datatable只接受JSON作为数据源,所以我需要以某种方式转换它
当我这样做的时候:
$(data).find('#datatable-responsive').get(0)
$('#tableid').tableToJSON(); <<< correct way
这将返回原始DOM元素(表本身),但table to json只接受实际选择器作为第一个参数,如下所示:
$(data).find('#datatable-responsive').get(0)
$('#tableid').tableToJSON(); <<< correct way
上面这两种方法给了我以下错误:
Error: tableToJSON is not a function
我怎样才能解决这个问题
@拉贾普拉布使用时:
console.log($(data).find('#datatable-responsive').eq(0));
我得到的是对象而不是本机DOM元素。。。仍然:/
Edit2:这是插件本身的链接:
https://github.com/lightswitch05/table-to-json
你的例子在这里和那里都有一个小细节
console.log($(数据).find(“#数据表响应”).eq(0))
确实会返回jQuery对象,而不是DOM元素,但这正是您所需要的
$(数据).find(“#datatable responsive”).get(0)
和$(data).find(“#datatable responsive”)[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();
几点注意事项
返回jQuery集合中的第一个DOM元素<代码>[0]也会这样做李>.get(0)
返回jQuery集合中的第一个DOM元素,但它被包装在自己的jQuery对象中李>.eq(0)
只需将加载的内容转换为分离的DOM元素李>$(数据)
- 不要使用ID标识动态加载内容中的元素。使用类确保不存在重复项
$(数据).find(“#datatable responsive”).eq(0).tableToJSON()
@rajaprabhuaravindasami我得到了数组[]jQuery对象“看起来像”数组。也许你没有火柴。无论如何,您都不应该在动态数据中使用ID选择器,因为复制会导致问题。改为使用类(几乎同样快)<代码>$(数据).find(“#datatable responsive”).tableToJSON()将单独对第一个匹配项进行操作,如果没有匹配项,则不执行任何操作。@GONECODE我理解您的意思。。。但是当我做$(data).find(“#datatable responsive”)@JadinStojadin:根据我找到的文档,tableToJSON
是一个jQuery插件,在这种情况下,它不是一个“原生DOM元素”,而是一个jQuery扩展。请提供一个指向您正在使用的tableToJSON的链接。