簡體   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