Я пытаюсь перезагрузить datatable. Я нажимаю на ячейку, и тогда работает запрос ajax. Если он возвращает успех, мне нужно перезагрузить datatable новыми данными. Я вижу действие перезагрузки «Обработка», но новые данные не отображаются в таблице.

Я использую ту же функцию в процессе удаления, и она работает.

Вот мой пример кода;

var dataTableId = "#dataTable";

function deleteFunction(){

// works correctly

}

$(dataTableId).dataTable({
        "sAjaxSource": "url",
        "aoColumns": [
            ...
        ],
        "aoColumnDefs": [               
           ...    
       ]
});

    var table = $(dataTableId).DataTable();
    $('#dataTableFiles tbody').on('click', 'td', function () {

                 $.ajax({
                    url: "url",
                    type: 'post',
                    dataType: 'json',
                    data: postArray,
                    success: function (response) {
                        if (response.result) {
                            table.ajax.reload();
                        }
                        else {
                            table.ajax.reload();
                        }
                    },
                    error: function () {
                        console.log("err")
                    }
                });    
    });

Спасибо..

0
kbrk 11 Ноя 2014 в 00:39
Можете ли вы сказать нам, какую версию API dataTable вы используете?
 – 
Koti Panga
11 Ноя 2014 в 01:24
Привет, "@версия 1.10.0-dev"
 – 
kbrk
11 Ноя 2014 в 11:25
Вы видели какую-либо ошибку в браузерной консоли?
 – 
Koti Panga
11 Ноя 2014 в 11:42
Нет, ошибки не увидел. Сейчас смотрю новые данные. Но это правильно.,
 – 
kbrk
11 Ноя 2014 в 11:47
Какой URL? в вашем вопросе это строка "url". это правильно?
 – 
Koti Panga
11 Ноя 2014 в 12:10

2 ответа

Попробуйте table.api().ajax.reload();

0
Ryan 9 Дек 2014 в 09:20

У меня такая же проблема.

Убедитесь, что ваша функция в классе контроллера также возвращает атрибут sEcho. sEcho отправляется от клиента в запросе ajax, затем вы должны захватить это sEcho в своем классе контроллера и отправить его обратно без изменений. Таким образом, json из класса контроллера может выглядеть так (где sEcho=10 — это значение, отправленное клиентом).

 { 
        "iTotalRecords": 10,
        "iTotalDisplayRecords": 10,
        "sEcho":10,
        "aaData": [

        ]
    }
0
Periklis Douvitsas 5 Июн 2015 в 14:00