0

jQueryで動作させようとしているコードがあります

$('#example tbody td img').live('click', function () {
    var nTr = $(this).parents('tr')[0];
    if (oTable.fnIsOpen(nTr)) { /* This row is already open - close it */
        this.src = "../compartilhados/img/details_open.png";
        oTable.fnClose(nTr);
    } else { /* Open this row */
        this.src = "../compartilhados/img/details_close.png";
        oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr), 'details ui-corner-all' );
    }
});

関数fnFormatDetailsは文字列を返すために使用されていましたが、$。ajaxの応答を返すように変更しました。

    function fnFormatDetails(oTable, nTr) {
        var aData = oTable.fnGetData(nTr);
        var parametros = {
            NumPA: aData[8]
        };
        var parametros = jQuery.param(parametros);
        $.ajax({
            type: "POST",
            url: "consultarProvidencias.asp",
            data: parametros
        }).done(function x(sOut) {
        return sOut;
        });
    }

sOutは、文字列のようなHTMLコードの平和です。何が起こっているのかわかりません。sOutがoTable.fnOpen(最初のコード)にロードされていないためです。ここに示すように、行の詳細にロードする必要があります。

助けてくれてありがとう。

4

1 に答える 1

3

次のように、関数 fnFormatDetails を変更して、ajax 呼び出しの応答を返す必要があります。

function fnFormatDetails(oTable, nTr) {
        var aData = oTable.fnGetData(nTr);
        var parametros = {
            NumPA: aData[8]
        };
        var parametros = jQuery.param(parametros);
        return $.ajax({
            type: "POST",
            url: "consultarProvidencias.asp",
            data: parametros
        });
    }

その後、その関数を呼び出す方法を変更します。

var data = fnFormatDetails(oTable, nTr);
$.when(data).then(function(theData) {
  oTable.fnOpen(nTr, theData, 'details ui-corner-all' );
});
于 2013-03-01T21:36:54.453 に答える