select не выполняет вызов ajax после обновления div - PullRequest
0 голосов
/ 10 октября 2018

У меня есть несколько функций внутри одного и того же div.Все работает хорошо, но только в первый раз.После этого ничего не работает.

У меня есть select2 с вызовом change ajax:

$('#category').change(function(e){
e.preventDefault();
var s = document.getElementById("category");
var strUser = s.options[s.selectedIndex].value;
var formData = new FormData();
formData.append('caller', 'PrintData');
formData.append('id', strUser);
$.ajax({ url: '../inc/call.php',
    enctype: 'multipart/form-data',
    processData: false,
    contentType: false,
    cache: false,
    data: formData,
    type: 'POST',
    success: function(output) {
        $('#data').html(output);
    }
});
})

select2 содержит категории и в нем будут перечислены все строки, принадлежащие этой категории.Пока все хорошо.

После звонка он отобразит все результаты в виде таблицы с 3 кнопками.Один из них использует ajax-вызов для удаления этого поля.Чтобы прослушать нажатие этой кнопки, я использую следующее:

$('#reloader').on( "click", "button", function(e) {
e.preventDefault();
let button = $(this); 
let id = button.data("id"); 
let func = button.data("function");
let code = button.data("action");

if(func == "delete"){
    DeleteData(id, code);
}else if(func == "edit"){
    window.location = button.data("link")
}
});

Когда я нажимаю кнопку, чтобы удалить строку, вышеуказанная функция вызывает следующую функцию:

function DeleteData(id, code)
 {
    swal({
        title: 'Are you sure?',
        text: "Do you want to delete " + code + "?" ,
        type: 'question',
        showCancelButton: true,
        confirmButtonColor: '#3085d6',
        cancelButtonColor: '#d33',
        confirmButtonText: 'Yes',
        showLoaderOnConfirm: true,
        preConfirm: function() {
          return new Promise(function(resolve) {
            $.ajax({ url: '../inc/call.php',
            data: {
                dados: JSON.stringify(id),
                caller: 'DeleteData',
                dataType: 'json'
            },
            type: 'POST'})
             .done(function(response){
                swal('Done!', response.message, response.status);
                updateDiv("reloader");
                $('#category').select2();

             })
             .fail(function(response){
                swal('Oops...', response.message, response.status);
                updateDiv("reloader");
                $('#category').select2();
             });
          });
        },
        allowOutsideClick: false     
     });
};

Возникла моя проблемапосле этого вызова ajax.Как может показаться, после того, как я вызываю функцию, которая «обновляет» весь div с помощью updateDiv("reloader");.Затем я пытаюсь преобразовать выбор в select2 с помощью $('#category').select2();, но он не работает.

По сути, выбор преобразуется в обычный выбор, а код для его преобразования в select2 не работает.Кроме того, даже если я изменю значение в select 2, он не вызовет ajax, чтобы вывести список результатов ($('#category').change(function(e){)

Таким образом, я бы хотел, чтобы вы помогли одному из двух решений: 1- Сделатьэта простая вещь работает, поэтому после обновления выбор становится select2, и он работает с созданной мной функцией изменения;2- После обновления сделайте так, как описано выше, но с выбором по умолчанию - последним, в котором будет перечислено все, что будет работать (чтобы избежать повторного выбора категории и ожидания списка данных) (лучший вариант);

Любая помощь будет оценена.Надеюсь, что тема хорошо представлена.Если нужно что-то поменять подскажите пожалуйста я обновлю.Спасибо.

1 Ответ

0 голосов
/ 10 октября 2018

используйте

$ ('body'). Делегат ('# category', 'change', function () {

})

, потому что какое-то времяразработчик, использующий датируемые данные, не читающий следующую страницу direct dom

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...