Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 使用Ajax请求创建具有嵌套表的新行_Jquery_Datatable_Datatables - Fatal编程技术网

Jquery 使用Ajax请求创建具有嵌套表的新行

Jquery 使用Ajax请求创建具有嵌套表的新行,jquery,datatable,datatables,Jquery,Datatable,Datatables,我正在尝试创建与此类似的功能: 我的代码唯一的主要区别是,我试图通过Ajax获取数据,但它不起作用 Ajax请求本身已成功发出,我可以在响应中看到HTML代码 我的JS代码: /* Creata TableData --------------------------------------------*/ function fnFormatDetails ( StreetVal, oTable, nTr ) { var sOut = $.ajax({ url: "ajax.

我正在尝试创建与此类似的功能:

我的代码唯一的主要区别是,我试图通过Ajax获取数据,但它不起作用

Ajax请求本身已成功发出,我可以在响应中看到HTML代码

我的JS代码:

/* 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-这是由于我之前所做的更改。你的解决方案确实有效!谢谢你的时间和努力。