подтвердить удаление с помощью AJAX

Как предложил NickTFried, Linked List - один из способов. Другой - иметь таблицу, достаточно большую, чтобы удерживать максимальное количество элементов, которые вы когда-либо имели, и управлять ими (какие из них действительны или нет, сколько противников в настоящее время в списке).

как изменение размера, вам придется использовать указатель вместо таблицы, и вы можете перераспределять, копировать и т. д. ... определенно не то, что вы хотите сделать в игре.

Если производительность - это проблема (и я предполагаю, что это так), правильно распределенная таблица - это то, что я буду использовать.

-2
задан hanane azee 17 January 2019 в 21:42
поделиться

2 ответа

Сделайте еще один вызов ajax в функции успеха:

   $(document).ready(function(){
       $.ajax({  
           url: "recursive.php",
           method:"POST",
           dataType: "json",       
           success: function(data)  
               { 
                   $(document).on('click', '.btn_supp', function(){
                       if(confirm("do you want to delete this file?")){
                         $.ajax({  
                          url: "delete.php",
                          method:"POST",
                           dataType: "json",       
                         success: function(data)  
                         {
                         alert("deleted");
                         });
                        }   
                        });
                       }
                   });   
                  $('#treeview').treeview({
                      data: data,
                      selectedBackColor: 'rgb(211,211,211)',
                      selectedColor: '#4A4A49',
                      enableLinks:true,
                      collapsedall: true
                  });
               }   
      });`
0
ответ дан Richard Socker 17 January 2019 в 21:42
поделиться

Самый простой способ отображения подтверждения, когда AJAX добавляет в DOM, - это связать делегированный слушатель события в функции DOMReady вашего представления.

Так как jQuery связывает обработчики событий во время состояния DOMReady, он не будет связывать дополнительные элементы в функции ajax.success, если ответ не включает в себя javascript и dataType является «script», или вы не анализируете [ 116] переменная из функции успеха и событие добавляется вручную.

Предполагается, что элемент с id="treeview" уже существует.

<script type="text/javascript">
jQuery(function($) {
    $(document).on('click', 'a[href^="delete.php"]', function(e) {
        return window.confirm('Are you sure you want to delete this file?');
    });

    $.ajax({
        url: "recursive.php",
        method:"POST",
        dataType: "json",       
        success: function(data) {
            $('#treeview').treeview({
                data: data,
                selectedBackColor: 'rgb(211,211,211)',
                selectedColor: '#4A4A49',
                enableLinks:true,
                collapsedall: true
            });
        }
    });
});
</script>
<div id="treeview"></div>

Это работает, сообщая jQuery отслеживать все щелчки внутри элемента #treeview, для запускающего элемента <a href="delete.php">. В частности, href^="delete.php" означает элемент <a>, с href, который начинается с delete.php. Если он найден, выполняется функция обратного вызова и отображается диалоговое окно подтверждения.


Если вы добавите атрибут class к элементу привязки recursive.php, вы можете заменить a[href^="delete.php"] на a.classname.

Пример https://jsfiddle.net/ub1hw9tn/

$arr = array(
    'text' => '<img src="img/pdf.png"><a class="delete" href="delete.php?doc='.$sub_data["code"].'" target="_blank">'.$sub_data["n_doc"].'</a>'
); 

Тогда в вашем javascript

$(document).on('click', 'a.delete', function(e) {
    if (!window.confirm('Are you sure you want to delete this file?')) {
       e.preventDefault();
    }
});
0
ответ дан fyrye 17 January 2019 в 21:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: