0

この機能を複製しようとしています: 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で動作しなくなります。

ここで私が見逃しているものを見ることができますか?

4

1 に答える 1

1

ここのコードは正しくありません:

var sOut = jQuery.ajax({
    url: "ajax/order_history_orderlines.asp",
    type: 'post',
    data: { orderid: aData[1] },
    context: document.body
});

jQuery.ajax()データを返さず、jqXHRオブジェクトを返します。success成功した ajax 呼び出しでデータを入力するには、コールバック機能を使用する必要があります。

var sOut = jQuery.ajax({
    url: "ajax/order_history_orderlines.asp",
    type: 'post',
    data: { orderid: aData[1] },
    context: document.body,
    success: function(data, textStatus, jqXHR)
    {
      // do something with data(json object returned by call)
    }
});
于 2012-06-08T17:10:25.823 に答える