Jquery 使用Ajax请求创建具有嵌套表的新行
我正在尝试创建与此类似的功能: 我的代码唯一的主要区别是,我试图通过Ajax获取数据,但它不起作用 Ajax请求本身已成功发出,我可以在响应中看到HTML代码 我的JS代码:Jquery 使用Ajax请求创建具有嵌套表的新行,jquery,datatable,datatables,Jquery,Datatable,Datatables,我正在尝试创建与此类似的功能: 我的代码唯一的主要区别是,我试图通过Ajax获取数据,但它不起作用 Ajax请求本身已成功发出,我可以在响应中看到HTML代码 我的JS代码: /* Creata TableData --------------------------------------------*/ function fnFormatDetails ( StreetVal, oTable, nTr ) { var sOut = $.ajax({ url: "ajax.
/* Creata TableData
--------------------------------------------*/
function fnFormatDetails ( StreetVal, oTable, nTr )
{
var sOut = $.ajax({
url: "ajax.php",
data: StreetVal,
success: function(data) {
console.log(data);
return data;
}
});
return sOut;
}
$(document).ready( function(){
$('.table-data tbody tr td a').addClass('closed');
var oTable = $('.table-data').dataTable({
"sPaginationType": "full_numbers",
"bStateSave": false,
"bRetrieve": true
});
$('.table-data tbody tr td a').live('click', function (event) {
var StreetVal = $(this).attr('href').split('#')[1];
var nTr = this.parentNode.parentNode;
if( $(this).hasClass('closed') ) {
$(this).removeClass('closed').addClass('open').html(' - ');
oTable.fnOpen( nTr, fnFormatDetails( StreetVal, oTable, nTr ), 'details' );
} else {
$(this).removeClass('open').addClass('closed').html(' + ');
oTable.fnClose( nTr );
}
return false;
});
});
问题是它抛出了一个错误:
无法转换JavaScript参数arg 0[nsIDOMHTMLTableCellElement.appendChild]
[Break On This Error]nNewCell.appendChild(mHtml)
在jquery.dataTables.js/v的第1776行。1.8.3.1开发
有什么问题?非常感谢您的建议。看起来nTr是一个JS节点,而不是Jquery元素。您可以尝试如下设置nTr:
var nTr = $(this).parent("tr")[0];
另外,在调用函数之前,请尝试在Ajax请求中添加“async:false”,以确保其已完成。在fnFormatDetails中实际返回“sOut.responseText”而不是sOut似乎有效。使用JS代码:
function fnFormatDetails ( StreetVal, oTable, nTr )
{
var sOut = $.ajax({
url: "ajax.php",
async: false, // added
data: StreetVal,
success: function(data) {
return data;
}
});
return sOut.responseText; / changed form `return sOut`
}
你能把3个参数传递给这样的细节吗?该示例仅显示了正在传递的两个参数,oTable和nTr。@Greg Pettit-为什么不呢?我想你想通过多少就通过多少。你不能吗?我不知道,所以它为什么会形成一个问题。但是这个函数大概是以一种规定的方式作用于你传递给它的东西。如果你任意地向它扔新的东西,函数可能不知道如何处理它。@Greg Pettit-刚刚测试过它。我删除了我的第三个参数和脚本,但仍然出现了一个错误。这里有一个类似的问题:不幸的是,在这些更改后,脚本返回相同的错误消息。您能举个例子吗?您所说的例子是什么意思?我将fnFormatDetails函数的最后一行更改为“return sOut.responseText;”,它成功了。但是我是在调试期间做的,所以您必须向jQueryAjax调用中添加async:false才能看到它工作http://seefeld.pl/test/-它不再出现错误,但也不会显示数据。此处的文件副本:
www.seefeld.pl/test/jQuery%20DataTables%20with%20hidden%20rows.zip
Sorry-这是由于我之前所做的更改。你的解决方案确实有效!谢谢你的时间和努力。