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 回答