DataTable не обновляется при использовании Ajax Jquery - PullRequest
1 голос
/ 06 мая 2020

Я уже проверял каждый вопрос, связанный с этим, и, похоже, ничего не работает. Вот мой случай:

Я использую версию 1.10.20 DataTable, и я пытаюсь обновить sh данные после вставки / удаления на стороне сервера, используя Ajax jquery ($. ajax ), то я безуспешно пытаюсь обновить sh объект Datatable.

Мой код:

    function displaymensajes()
{   

$.ajax({
    async: true,
    url: 'ajaxscripts.php',
    type: 'POST',
    data: ({ "WTDo" : 'displaymensajes', "userid" : <?php echo $_SESSION["IDInversionista"] ?>}) ,
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
    success: function (response) {
    $('#tbodymensajes').html(response);



//If I make the call here($("#mensajesTable").DataTable();) instead of on document ready, the Second time the functions is called(I have to call it again when I insert or delete records) I get the error when it can't initialize twice and stuff.
//I try do the ajax.reload() no luck, its gives me the error where Json is not properly formatted(of course I not using Json format in the server side, the response is pure HTML code)
//I try delete the table and create it again, no luck

    },
    error: function () {
        alert("error");
    }
}); 

}

displaymensajes();


//On Document ready... Initialize the API
$(document).ready(function() {
 $("#mensajesTable").DataTable(); 
 } );

Результаты:

В таблице 2 строки но Datatable по-прежнему считает, что существует только один. Только догоняет, когда я обновляю sh страницу. ПОМОГИТЕ?.

введите здесь описание изображения

PD: Может кто-нибудь сделать refre sh () или update () для этого API, пожалуйста?

1 Ответ

0 голосов
/ 06 мая 2020

После вызова ajax вам необходимо использовать ответ вызова ajax, чтобы заменить HTML в таблице обновленным HTML. Трудно сказать, как бы вы это сделали, не видя больше кода, но распространенный метод - вернуть содержимое таблицы из кода на стороне сервера как HTML и заменить обновленное содержимое. Для этого вы должны добавить что-то вроде этого в свой ajax вызов:

$.ajax(...<your current code>).done(function(response){
    $("#yourTableId").html(response)
});

Чтобы это работало, ваш серверный код должен возвращать обновленный HTML (или JSP или что бы вы ни использовали) в ответ на вызов ajax.

...