1

Есть таблица, которая выводится на сайт, и есть кнопка, которая должна удалять значение из таблицы по клику, сделал это на AJAX

 <a onclick="DelAcc'. $data['id'] .'();" title="Удалить этот аккаунт [ IP: '. $countrows .' | Уник.: '.$countuniqrows.' ]" class="adminbutton" type="submit"><i class="fa fa-trash-o" aria-hidden="true"></i></a>
<script type="text/javascript">
function DelAcc'. $data['id'] .'() {
    //отправляю POST запрос и получаю ответ
    $.ajax({
        type:"post",//тип запроса: get,post либо head
        url:"index.php",//url адрес файла обработчика
        data:{"delwhereid":"'. $data['id'] .'","loginacc":"'. $data['email'] .'","passp":"'. $data['pass'] .'"},//параметры запроса
        response:"text",//тип возвращаемого ответа text либо xml
        success:function (data) {//возвращаемый результат от сервера
            $("#acc'. $data['id'] .'").fadeOut("fast");
        }
    });
}

</script>

эта кнопка есть в каждой строке таблицы и удаляет соответственно ту запись, в какой строке находится. Все работает прекрасно, но если запись была добавлена после первой загрузки страницы и страницу "обновить" с помощью загрузки блока AJAX, то скрипт из кода ниже не загружается, его просто нет, загружается только сама кнопка с ... до Объясните, пожалуйста, в чем криворукость

Arthur
  • 87
  • ну т.е. есть меню, которое по клику на <a href ссылки не перезагружает страницу, а только догружает определенное содержимое с нужной страницы на данную. При этом если перезагружать страницу, то все работает нормально и скрипты догружаются, а если вот таким образом через AJAX, то нет. – Arthur Jun 15 '17 at 18:48
  • держитесь, Вы сейчас удивитесь, насколько проще это можно сделать –  Jun 15 '17 at 18:49
  • просвятите, пожалуйста, я просто только начал осваивать все это дело =) – Arthur Jun 15 '17 at 18:50

1 Answers1

0

В js понадобится только одна функция deleteAccount для всех кнопок:

$(document).ready(function(){

  function deleteAccount(e) {
    e.preventDefault();

    //отправляю POST запрос и получаю ответ
    $.ajax({
      type:"post",//тип запроса: get,post либо head
      url:"index.php",//url адрес файла обработчика
      data: {
        delwhereid: $(this).data("id"),
        loginacc: $(this).data("email"),
        passp: $(this).data("pass")
      },//параметры запроса
      response:"text",//тип возвращаемого ответа text либо xml
      success:function (data) {//возвращаемый результат от сервера
        $("#acc" + $(this).data("id")).fadeOut("fast");
      }.bind(this)
    });
  }

  // используем делегирование событий из jQuery, 
  // чтобы обработчик вызывался как для существующих, 
  // так и для созданных в будущем элементов:
  $(document).on("click", ".adminbutton", deleteAccount);
});

В html запишем данные для каждой кнопки в сам DOM-элемент:

<a data-id="'. $data['id'] .'" data-email="'. $data['email'] .'" data-pass="'. $data['pass'] .'" title="Удалить этот аккаунт [ IP: '. $countrows .' | Уник.: '.$countuniqrows.' ]" class="adminbutton" type="submit"><i class="fa fa-trash-o" aria-hidden="true"></i></a>
  • Большое спасибо, работает как часы! Есть еще две кнопки, сейчас попробую сделать сам на основе Вашего примера. Еще раз благодарю! – Arthur Jun 15 '17 at 19:03
  • @Arthur галочка слева - щёлк :). Успехов! –  Jun 15 '17 at 19:06