繁体   English   中英

jQuery数据表,过滤不起作用(低速ajax /异步)

[英]JQuery Datatables, filtring not working (trough ajax/async)

我正在使用JQuery数据表。 我正在通过ajax获取表数据,并且有一种我想使用的方法叫做fnGetColumnData(它为每一列获取表值)。 由于ajax是异步的,在domready上运行,并且此函数是匿名的,因此在尝试获取数据时,该数据不可用。 因此,SELECT筛选器为空白。

文件@ http://www.datatables.net/examples/api/multi_filter_select.html

我的代码@ http://pastie.org/1896827(*我无法在此处粘贴它,因为发布时工具栏不可用。)

我该如何解决?

谢谢看

由于您将ajax用作数据源,因此我认为您必须以另一种方式填充选择,因为在客户端,您无权访问该列的完整数据。 您还必须获取数据以使用AJAX填充选择。 我会这样:

我会改变这个电话

this.innerHTML = fnCreateSelect( oTable.fnGetColumnData(i) ) ;

this.innerHTML = fnCreateSelect( i );

然后更改fnCreateSelect,以便它从这样的Ajax源获取选项

function fnCreateSelect( iColumnNumber )
{
    var r='<select><option value=""></option>';
    $.getJSON(
              'createSelect.php',
               { colNumber: iColumnNumber },
               function (json) 
                 {//i don't check for success to make things simpler
                      foreach (option in json.data){
                           r += '<option value="'+option.name+'">'+option.name+'</option>';
                      }
                 }
               );
    return r+'</select>';
}

并且比起具有以下功能的createSelect.php文件:

$colNumber = $_GET['colNumber'];
switch($colNumber){
case '0': $sql = "SELECT DISTINCT colName0 from table";
          break;
case '1': $sql = SELECT DISTINCT colname1 from table"
          break;
//make as many cases as the number of your columns then retrieve the data from the DB and return the json
}

这样,您可以使用选择的过滤器实际数据填充选择过滤器

PS我编写了代码只是为了向您展示我的想法,我没有尝试过,因为我无法访问您的服务器端数据,如果不清楚,我会尝试更加精确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM