Как применить метод datatable к таблице, которая создается на лету

1

Я динамически создаю таблицу через событие нажатия кнопки

function createTable() {
    $.ajax ({
        url: 'php/GetData.php', 
        type: 'POST', 
        data: {id:25},
        success: function(msg){
            var obj = JSON.parse(msg);
            var tableString = "<table id='tbla' class='display'><thead><tr><th>Name<th>Age<th>Birthday</tr></thead><tbody>";

            for (var i=0; i<obj.length; i++) {
                //alert(obj[i].name);
                tableString += gg_stringformat("<tr><td>{0}<td>{1}<td>{2}</tr>", obj[i].name, obj[i].age, obj[i].birthday);
            }

            tableString += "</tbody></table>";
            //alert(tableString);

            $('#divb').html(tableString);
            $('#tbla').dataTable();
        }
    });
}

метод

. $ ( '# TBLA') DataTable();

не работает. Когда я помещаю эту строку в $(document).ready(function(){.....}); возникает ошибка, и ничего не видно. Потому что таблица с этим id, все еще не представлена. Как достичь этой задачи?

Все соответствующие файлы связаны правильно.

<link rel="stylesheet" href="DataTables/dataTables.min.css"></style>
<script type="text/javascript" src="DataTables/dataTables.min.js"></script>





function gg_stringformat() {
var argcount = arguments.length,
    string,
    i;

if (!argcount) {
    return "";
}
if (argcount === 1) {
    return arguments[0];
}
string = arguments[0];
for (i = 1; i < argcount; i++) {
    string = string.replace(new RegExp('\\{' + (i - 1) + '}', 'gi'), arguments[i]);
}
return string;
}
  • 0
    Не работает ли его инициализация при успехе AJAX, как показано в коде вопроса?
  • 0
    Пожалуйста, включите точный текст ошибки.
Показать ещё 2 комментария
Теги:
html-table
datatable

1 ответ

0
Лучший ответ

В HTML, который вы используете для построения таблицы, есть несколько ошибок. Вы не закрываете теги <th> или <td>. Это может вызвать проблемы.

Вместо alert попробуйте сделать console.log(tableString) в конце, а затем просмотрите вывод, чтобы увидеть, является ли он допустимым HTML.

Кроме того, попробуйте прокомментировать окончательный вызов dataTable и посмотрите, может ли функция, по крайней мере, dataTable основную таблицу.

Если ни одна из этих проблем не решит проблему, возможно, проблема связана с вызовом XHR. msg формируется так, как вы ожидаете? Есть ли ошибка в gg_stringformat?

  • 0
    Таблица встреч в див. Это означает, что все в порядке с созданием таблицы. gg_stringformat обеспечивает только форматирование строки. function gg_stringformat() { var argcount = arguments.length, string, i; if (!argcount) { return ""; } if (argcount === 1) { return arguments[0]; } string = arguments[0]; for (i = 1; i < argcount; i++) { string = string.replace(new RegExp('\\{' + (i - 1) + '}', 'gi'), arguments[i]); } return string; }
  • 0
    В этом случае вам следует проверить документацию на «DataTables». Я не узнаю имя, и ваш пост не дает мне достаточной информации, чтобы понять, что исследовать, но именование файлов предполагает, что это часть некоторой структуры. Убедитесь, что стол, который вы строите, удовлетворяет его требованиям. Возможно, вы вызываете это неправильно.
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню