【问题标题】:JQuery Datatables, filtring not working (trough ajax/async)JQuery 数据表,过滤不起作用(通过 ajax/async)
【发布时间】:2011-05-13 13:32:02
【问题描述】:

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

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

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

我该如何解决这个问题?

感谢观看

【问题讨论】:

    标签: javascript jquery ajax datatables


    【解决方案1】:

    由于您使用 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 我编写代码只是为了向您展示我的想法,我没有尝试过,因为我无权访问您的服务器端数据,如果不清楚,我会尝试更精确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      相关资源
      最近更新 更多