【发布时间】:2012-06-08 17:02:30
【问题描述】:
我正在尝试复制此功能:http://datatables.net/release-datatables/examples/api/row_details.html
例子提供了这个功能:
/* Formating function for row details */
function fnFormatDetails ( oTable, nTr )
{
var aData = oTable.fnGetData( nTr );
var sOut = '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">';
sOut += '<tr><td>Rendering engine:</td><td>'+aData[1]+' '+aData[4]+'</td></tr>';
sOut += '<tr><td>Link to source:</td><td>Could provide a link here</td></tr>';
sOut += '<tr><td>Extra info:</td><td>And any further details here (images etc)</td></tr>';
sOut += '</table>';
return sOut;
}
我已经把这个函数改成这样了:
/* Formating function for row details */
function fnFormatDetails(oTable, nTr) {
var aData = oTable.fnGetData(nTr);
var sOut = jQuery.ajax({
url: "ajax/order_history_orderlines.asp",
type: 'post',
data: { orderid: aData[1] },
context: document.body
});
return sOut;
}
当通过 FireBug 进行调试时,我看到 ajax 响应一切正常。发出请求,请求成功,正在返回正确的信息。这是返回的内容:
<!-- Teplate for orderlines found in rs Record Set -->
<table cellpadding="5" cellspacing="0" border="0" style="padding-left: 50px;">
<tr>
<td>
Quantity:
</td>
<td>
1
</td>
<td>
Description:
</td>
<td>
48 Cans of drink
</td>
</tr>
</table>
但是,当我单击 [+] 按钮时,它会展开该行,但“详细信息”行永远不会使用从 ajax 请求返回的表进行更新。
当我使用示例中的所有内容和 sOut = <table> 等时,它可以工作。当我切换它以获取 ajax 请求时,它会停止工作并出现 0 个错误。
谁能看到我在这里遗漏了什么?
【问题讨论】:
-
您是否将 ajax 查询的结果放在任何地方?
-
@jeschafe 我不确定你问的是放置它们的哪个部分。在 DataTables 示例中,该函数返回 sOut,然后应该使用来自 sOut 的返回填充
<td class="details">。如果您询问 Ajax 请求的响应是什么,请参见上面的代码块<!-- Teplate for orderliens found in rs Record Set -->。 -
对,我明白了@Erik philips 在下面提出的观点。在上面的第一个函数中,它只是设置一个字符串文字以插入为 html。当您执行 ajax 时,它的格式必须相同,但您插入的是回调中返回的数据,而不是实际的 ajax 对象。
标签: jquery datatables