как показать анимацию загрузки и отключить кнопку во время процесса ajax - PullRequest
1 голос
/ 21 июня 2019

я использую ajax для отправки идентификатора кнопки в test.php, но я застрял на шаге, как отключить кнопку и показать обработку изображения gif во время процесса ajax,

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

мой код это

     <tbody>

   <?php

   $letter=mysqli_query($con,"SELECT * FROM letters order by id DESC");



             if(mysqli_num_rows($letter)>0){
        while($rows_letter=mysqli_fetch_array($letter))

        {
$id=$rows_letter['id'];
$subject=$rows_letter['subject'];
$status=$rows_letter['status'];
?>

    <tr>
      <th class="text-center" scope="row">1</th>
      <td class="text-center"><?php echo $subject ;?></td>
      <td class="text-center"><?php if($status == 1){echo '<mark style="background-color: #5cb85c; color:white;" > Successfully Sent </mark>'; }else{ echo '<mark  style="background-color:#f0ad4e; color:white;"> Not  Sent Yet </mark>';}?></td>
      <td><button type="button" class="btn btn-info btn-sm btn-block">
      <span class="fa fa-pencil-square-o"></span> Edit</button></td>
      <td><button type="button" class="btn btn-danger btn-sm btn-block"> <span class="fa fa-trash-o"></span>  Move To Trash</button></td>
      <td>
      <img src="https://svc.opushealth.com/balcoltrasavings/img/Processing.gif" id="img" style="display:none"/>
      <button type="button" onclick="startsend(<?php echo $id;?>);"
      id="id"  value="<?php echo $id;?>"class="btn btn-success btn-sm btn-block">
      <span class="fa fa-paper-plane-o"></span> Send To All</button></td>
    </tr>


      <?php

        }

             }      

          ?>
     </tbody>
       <script type='text/javascript'>

    //AJAX function
   function startsend(id) {
       $('#img').show(); 
       $("#id").attr("disabled", true);
      $.ajax({
        type: "POST",
        url: "test.php",
        data:{ id: id },
        success: function(msg){
        alert( "Button Id is " + msg );
         $('#img').hide();

        }
      });
    }

</script>

файл test.php имеет значение

 <?php

if(isset($_POST['id'])){
$id = $_POST['id'];}
///rest process
?>

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Во-первых, вам нужно удалить все атрибуты id, которые вы создаете в своем HTML-коде, внутри цикла в PHP, так как это создаст дубликаты, которые недопустимы.Вместо этого измените их на классы.

Во-вторых, присоединяйте свои события, используя ненавязчивые обработчики событий, а не встроенные, поскольку они устарели и являются плохой практикой.Поскольку вы используете jQuery, это можно сделать с помощью методов click() или on().

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

<img src="https://svc.opushealth.com/balcoltrasavings/img/Processing.gif" class="img" style="display: none" />
<button type="button" value="<?php echo $id;?>" class="id btn btn-success btn-sm btn-block">
  <span class="fa fa-paper-plane-o"></span> 
  Send To All
</button>
$('button.id').on('click', function() {
  var $btn = $(this).prop("disabled", true);
  var $img = $btn.prev('.img').show(); 

  $.ajax({
    type: "POST",
    url: "test.php",
    data: { id: $btn.val() },
    success: function(msg) {
      console.log("Button Id is " + msg);
      $img.hide();
    }
  });
});
0 голосов
/ 21 июня 2019

Если вы используете ajax, то (делая это как можно более простым).

Добавьте загружаемое изображение в формате gif в html и сделайте его скрытым (используя стиль в самом html сейчас, вы можете добавить его в отдельный CSS): -

<img src="path\to\loading\gif" id="img" style="display:none"/ >

Показать изображение при нажатии кнопки и снова скрыть его при успешном выполнении.

$('#buttonID').click(function(){
  $('#img').show(); //<----show here
  $.ajax({
    ....
   success:function(result){
       $('#img').hide();  //<--- hide again
   }
}

Убедитесь, что вы скрываете изображение и в ответных сообщениях об ошибках ajax, чтобы убедиться, чтоGIF скрывается, даже если Ajax не работает.

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