Это должно быть не только простой операцией, но я следую документации также. У меня есть вызов ajax, который возвращает набор данных json
. Я успешно очистил таблицу, но при вызове метода success
ничего не происходит. Оператор console
показывает, что данные возвращаются... однако таблица остается пустой. Есть идеи, почему?
JS
$('#SortByCoverage').click(function () {
var table = $('#theTable').DataTable();
table.fnClearTable();
$.ajax({
url: '/Home/Question2',
type: 'GET',
dataType: 'json',
success: function (data) {
console.log(data);
$("#thetable").dataTable({
"aaData": data,
"aoColumns": [
{title:"AdId"},
{title:"BrandId"},
{title:"BrandName"},
{title:"NumPages"},
{title:"Position"}
]
});
}
});
Код на стороне сервера
public JsonResult Question2()
{
var ads = _client.GetAdDataByDateRange(new DateTime(2011, 1, 1), new DateTime(2011, 4, 1));
var json = ads.Where(x => x.Position.Equals("Cover") && x.NumPages >= (decimal)0.5).Select(x => new{
AdId = x.AdId,
BrandId = x.Brand.BrandId,
BrandName = x.Brand.BrandName,
NumPages = x.NumPages,
Position = x.Position
});
return Json(json, JsonRequestBehavior.AllowGet);
}
Пример данных (на стороне клиента)
ИЗМЕНИТЬ
Как указано в комментариях, я неправильно написал имя элемента dataTable
в обратном вызове success
. Однако теперь я получаю следующую ошибку:
Не удается повторно инициализировать DataTable. Чтобы получить объект DataTables для этой таблицы, не передавайте аргументы или см. документы для bRetrieve и bDestroy.
Мне действительно нужно уничтожить таблицу, как только она будет очищена, чтобы перезагрузить данные?
Я добавил
bRetrieve
иbDestroy
. Это избавило от ошибки, но новые данные по-прежнему не загружены в таблицу.$.ajax({ url: '@Url.Action("Question2", "Home")', type: 'GET', dataType: 'json', success: function (data) { console.log(data); $("#theTable").dataTable({ //"bRetrieve": true, "bDestroy": true, "aaData": data, "aoColumns": [ {title:"AdId"}, {title:"BrandId"}, {title:"BrandName"}, {title:"NumPages"}, {title:"Position"} ] }); } });
"#theTable"
, а в своем успехе fn вы выбираете"#thetable"
--- это один и тот же элемент? Опечатка? - person Josh KG   schedule 02.12.2015