2016-04-19 2 views
0

Были проблемы с JQuery datatable. https://datatables.net/JQuery не может распознать идентификатор таблицы из переменной

. Ссылки и файлы .js и bootstrap верны, потому что целая страница JQuery pagination datatable работает, если таблица и ее содержимое находятся внутри div.

Код скрипта следовать:

$(document).ready(function() { 
    $('#example').DataTable({ 
     "pagingType": "full_numbers" 
    }); 
}); 

Тогда есть:

function generateTable(){ 
var table = "<table id='example' class='display' cellspacing='0' width='100%'>" 

после того, информация пользователям таблицы считывается с Json и положить в стол, как

table += 

И наконец, вся переменная таблицы помещается в div:

$("#myDiv").append($(table)); 

! Функция не распознает id = 'example'! Что можно изменить так, он может распознать?

Как было сказано, таблица данных с CSS генерируется правильно, если данные передаются непосредственно в div.

Благодаря

Сделали ALLtogether отдельной функции

function dataTable() { 
$('#example').DataTable({ 
     "pagingType": "full_numbers" 
    }); 
} 

и назвали его после generateTable() и не работали.

+0

страница запуска "готова", прежде чем он загружает JSon? Вещи асинхронны ... Поместите несколько «console.log» («fetchch json»); 'и' console.log («document ready»); 'чтобы посмотреть, какой заказ он запускает. – SparK

+0

В журнале показано, что последний выбор json. Столбцы столбцов указаны так, что структура таблицы должна быть распечатана независимо от того, что. – SeldomScheen

+0

Почему вы не вызываете DataTable после того, как вы закончите загрузку div? Что-нибудь еще показывающее на консоли? – SparK

ответ

0

Вы можете попробовать:

function generateTable(data){ 
    if(data.lenght > 0){ 
     var table = "<table id='example' class='display' cellspacing='0' width='100%'>"; 
     //*** the rest of the code/use table += data... *** 
     table += "</table>"; //close the element to make it a valid element! 
    } 
    else { 
     table = <table id='example' class='display' style="display:none;"></table>"; //so it is a valid element 
    } 
} 
$(document).ready(function() { 
    $.getJSON("your call") 
     .done(function(json) { 
      generateTable(json);//when the document is ready, it should be call so it can be append... 
     }) 
     .fail(function(jqxhr, textStatus, error) { 
      generateTable("");//when the document is ready, it should be call so it can be append... 
    }); 

    $("#myDiv").append($(table)); // then you append it 

    //now you can use it, because now is part of the DOM. 
    $('#example').DataTable({ 
     "pagingType": "full_numbers" 
    }); 
}); 

Как и что это создаст таблицу после JSON возвращается или пустую таблицу, если это не так. Надеюсь, это поможет вам.

+0

Когда я использую вызов функции generateTable, тогда JSON не читается.Следует отметить, что перед его построением я использовал

стиль таблицы в переменной, и все сработало. Отлаживали его со всех сторон, а идентификатор в переменной не был законным. – SeldomScheen

+0

Кроме того, изменение размера ячейки и ширины влияет на переменную таблицы. – SeldomScheen

+0

@SeldomScheen надеюсь, что это редактирование помогает ... –

0

Спасибо, ребята, за вашу помощь. Удалось решить проблему с помощью ваших идей.

Все дело в синхронизации, и таблица примеров была помещена в div после document.ready (function), поэтому я не смог загрузить правильную базу данных DataTable.

Итак, я крикнул

function dataTable() { 
$('#example').DataTable({ 
     "pagingType": "full_numbers" 
    }); 
} 

из

function generateTable(){ 

после

$("#myDiv").append($(table)); 
dataTable(); 
Смежные вопросы