1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

jQueryのローディング画面

Last updated at Posted at 2021-12-13

#概要
jQueryのローディング画面のサンプルです。

#ソース
■正常に表示される


<!DOCTYPE html>

<html>

<head>

    <title>done, fail, statusCodeの処理順確認</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: #000;

  background-image: url(https://gimmicklog.com/demo/loading/img-loading.gif);

  background-repeat: no-repeat;

  background-attachment: fixed;

  background-position: center center;

  background-size: 150px 150px;

}

</style>

  <form method="post" accept-charset="utf-8">

  </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', //存在しないファイルを指定及びURLを指定すると異常終了

          type: 'POST',

          data: {

            name: "test"

          },

          //リクエストが完了するまで実行される

          beforeSend: function(){

            $('.loading').removeClass('hide');

          }

        }).done(function(data){

          $('.loading').addClass('hide');          

          //$('.msg').append('<p>NAME: ' + data + '</p>');

          console.log("XMLHttpRequest : " + data);
          console.log(data);

        }).fail(function(XMLHttpRequest, textStatus, errorThrown){

          console.log("failed...");

          //下記のコードはエラーになった場合も、ローディング画面終了のためです。
          $('.loading').addClass('hide');  

          console.log("XMLHttpRequest : " + XMLHttpRequest.status);

          console.log("textStatus     : " + textStatus);

          console.log("errorThrown    : " + errorThrown.message);

        });

      });

    });

  </script>

</body>

</html>

■send.phpソース
サーバへ格納しているファイルです。htmlファイルと同じ階層においてから実行してみてください。
※Apache+PHP環境がある前提で実行です。


  sleep(1);

  header('Content-type: text/plain; charset=utf-8');

  if(isset($_POST['name'])) {

    $name = $_POST['name'];
    //$msg = nl2br($name);
    //echo $msg;
    //echo "SUCCESS";
  } else {
    echo "FAILED.";
  }

#動作確認
■異常終了
下記のように画面でボタンをクリックした後、エラーがコンソールに表示されます。

image.png

image.png

■正常終了
下記のように画面でボタンをクリックした後、正常の200コード値が返却されます。

image.png

image.png

■ローディング画面
全画面が下記のように表示されます。
image.png

#参照サイト
jQueryでページ読み込み中にローディング画面を表示する方法
https://gimmicklog.com/jquery/278/

Ajax(jQuery)での通信中にローディング画像を表示する
https://qiita.com/dkmrkm/items/4aa1a457dd26806e9008

#終わりに
AJAX通信処理でapiの戻り値が返ってくるまでローディング画面を表示してみました。
正常に動作していることを確認しましたので、問題ないと思います。
上手く動いていない場合、既存のjavascriptにエラーがないか確認してみてください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?