Ajax(jQuery)에서 통신하는 동안 로딩 이미지 표시

하고 싶은 일



Ajax로 서버와 통신할 때, 빙글빙글의 로딩 화상을 표시하고 싶다.

개요


  • beforeSend 를 사용한다. 이것을 사용하면 ajax 요청 전에 처리를 실행할 수 있습니다.
  • removeClass , addClass
  • 이미지는 여기에서 빌렸습니다. htps //w w. 베리쵸. 오 rg / ぉ ぢ g_ 속눈썹 s / t 란 s 파렌 t01. HTML

  • php측은 받은 값을 그대로 출력하는 것만으로 합니다.
  • 로딩 이미지를 표시하기 위해 sleep() 에서 1초 정도 지연시키고 있습니다.


  • index.html
    <!DOCTYPE html>
    <html lang="ja">
    <head>
      <meta charset="utf-8">
      <title>Ajax Test</title>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    </head>
    <body>
    <style type="text/css">
    body {
      margin-top: 100px;
      text-align: center;
    }
    .hide {
      display: none;
    }
    .loading {
      position: fixed;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      background: rgba(0,0,0,.5);
      background-image: url(../img/712-88.gif);
      background-repeat: no-repeat;
      background-attachment: fixed;
      background-position: center center;
      background-size: 150px 150px;
    }
    </style>
    
      <form method="post" accept-charset="utf-8">
        <p>NAME: <input type="text" name="name" id="name"></p>
      </form>
    
      <button id="button1">POST</button>
      <div class="msg"></div>
      <div class="loading hide"></div>
    
      <script type="text/javascript">
    
        $(function() {
          $('#button1').on('click', function(){
            $.ajax({
              url: 'send.php',
              type: 'POST',
              data: {
                name: $('#name').val()
              },
    
              //リクエストが完了するまで実行される
              beforeSend: function(){
                $('.loading').removeClass('hide');
              }
    
            }).done(function(data){
              $('.loading').addClass('hide');          
              $('.msg').append('<p>NAME: ' + data + '</p>');
    
            }).fail(function(XMLHttpRequest, textStatus, errorThrown){
              console.log("failed...");
              console.log("XMLHttpRequest : " + XMLHttpRequest.status);
              console.log("textStatus     : " + textStatus);
              console.log("errorThrown    : " + errorThrown.message);
            });
          });
        });
    
      </script>
    </body>
    </html>
    

    send.php
    <?php
      sleep(1);
    
      header('Content-type: text/plain; charset=utf-8');
      if(isset($_POST['name'])) {
        $name = $_POST['name'];
        $msg = nl2br($name);
        echo $msg;
      } else {
        echo "FAILED.";
      }
    

    실행 결과





    Special Thanks


  • jQuery samples - Ajax시 로딩 표시
  • 【ajax】통신 에러가 된 원인(에러 로그)을 취득한다
  • 좋은 웹페이지 즐겨찾기