2015-10-16 7 views
1

Так что у меня этот скрипт в файл с именем qnams.php, который возвращает JSON:AJAX JSON загрузки JQuery DataTable

include ("../include/database.php"); 

include ("../include/sessions.php"); 

$select = "SELECT column1,column2,column3,column4 
      FROM qnamtable WHERE USER = '$username'"; 

$query = mysqli_query($dbc, $select) or die(mysqli_error()); 

$out = array(); 

while ($row = $query->fetch_array()) { 
    $out[] = $row; 
} 
echo json_encode($out); 

mysqli_free_result($query); 

я нашел различные сообщения о том, как добавить JSON непосредственно в DataTable, но был немного запутался о том, как действовать.

На моей главной странице, я эту функцию в нижней части страницы:

$(function() { 
    $('#example1').dataTable({ 
     "bPaginate": false, 
     "bLengthChange": true, 
     "bFilter": true, 
     "bSort": true, 
     "bInfo": true, 
     "sScrollY": "auto", 
     "sScrollCollapse": true, 
     "bAutoWidth": true 
    }); 
}); 

Что мне нужно добавить в эту функцию, чтобы включить JSON со всеми заголовками и данными?

Пожалуйста, помогите и благодарите вас заранее.

+1

Итак ... это поможет, если у вас установлена ​​самая последняя версия JQuery DataTables. Приобретение новой версии помогло решить многие проблемы, которые у меня были. –

ответ

0

Все ответы выше были полезны, однако в конце концов мне просто нужно было приобрести последнюю версию JQuery dataTables. Я использовал более старый код со старым шаблоном, и это было основной проблемой, влияющей на мои результаты.

1

Вы должны использовать AJAX вариант Jquery DataTables

АЯКС: { URL: 'путь///PHP/файл/с/jsondata' }

1

Вы можете использовать, как показано ниже ,

$(function() { 
    $('#example1').dataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": "qnams.php" //set your php file location 
     "bPaginate": false, 
     "bLengthChange": true, 
     "bFilter": true, 
     "bSort": true, 
     "bInfo": true, 
     "sScrollY": "auto", 
     "sScrollCollapse": true, 
     "bAutoWidth": true 
    }); 
}); 

HTML, должно быть, как показано ниже, убедитесь, что идентификатор должен быть example1

Установить все заголовки как можно ниже.

<table id="example1" class="display" cellspacing="0" width="100%"> 
    <thead> 
    <tr> 
     <th>column1</th> 
     <th>column2</th> 
     <th>column3</th> 
     <th>column4</th> 
     <th>column5</th> 
     <th>column6</th> 
    </tr> 
    </thead> 

    <tfoot> 
    <tr> 
     <th>column1</th> 
     <th>column2</th> 
     <th>column3</th> 
     <th>column4</th> 
     <th>column5</th> 
     <th>column6</th> 
    </tr> 
    </tfoot> 
</table> 

Проверить больше информации от here

+0

, но теперь, как мне настроить столбцы столбцов и добавить ячейки таблицы с данными? –

+0

@HoodCoderMan Проверьте мой ответ. Я обновил его. – jlocker

+0

Но я до сих пор не вижу, как получить значения JSON для заполнения в таблице.Что мне не хватает? –

1

Сначала я хотел бы сказать, что вы должны использовать fetch_assoc, не fetch_array(). fetch_array() будет включать в себя как ассоциированная и индексированный массив:

[{"0":"x","column1":"x","1":"y","column2":"y"}] 

нам просто нужно

[{"column1":"x","column2":"y"}] 

Тогда вот полностью автоматизированный скрипт для заселять

<table id="example1"></table> 

с любым JSON пока он хорошо сформирован (как кажется, ваш PHP-скрипт):

$.ajax({ 
    url : 'qnams.php', 
    dataType : 'json', 
    success : function(json) { 
     //build the column definitions for titles and data-indexes 
     var columns = []; 
     Object.keys(json[0]).forEach(function(column) { 
      columns.push({ title: column, data: column }) 
     }) 
     $('#example1').dataTable({  
      data : json, 
      columns : columns, 

      "bPaginate": false, 
      "bLengthChange": true, 
      "bFilter": true, 
      "bSort": true, 
      "bInfo": true, 
      "sScrollY": "auto", 
      "sScrollCollapse": true, 
      "bAutoWidth": true 
     }) 
    } 
}); 

Предполагаете, вы используете 1.10.x of dataTatables.

+0

Как ваш ответ, так и нижестоящий элемент jlocker выглядят многообещающими, но я просто не могу ни работать, ни работать. Я продолжу проверять оба ответа, пока не смогу заставить его работать. Благодарю. –

+0

@HoodCoderMan, что не работает - есть ли ошибки в консоли? До тех пор, пока вы используете 'fetch_assoc', я почти не вижу, что может пойти не так. :) Попробуйте утешить' json 'в обработчике успеха - вы когда-нибудь достигаете его? Возможно, в ответе у вас есть пробелы или другой мусор. – davidkonrad

+0

Я использую fetch_assoc. Я непреднамеренно одобрил редактирование jlocker и изменил его на fetch_array. И консоль не показывает ошибок. Я все еще тестирую. Я вернусь к тебе. –

Смежные вопросы