1
0

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.

【Laravel + jQuery 】BlockUIプラグインで非同期通信中のローディング状態を表示する

Last updated at Posted at 2022-02-15

概要

Ajaxを利用した非同期通信でjQuery BlockUI Pluginを利用したので紹介します

BlockUIについて

jQuery BlockUI Pluginを使用すると、AJAX使用時にブラウザをロックすることなく、同期動作をシミュレートすることができます[1]。このプラグインを有効にすると、無効化されるまで、ページ(またはページの一部)に対するユーザーの操作を阻止します。BlockUIは、DOMに要素を追加して、ユーザーとの対話をブロックする外観と動作の両方を実現します。

スクリーンショット 2022-02-16 0.46.27.png

やり方

CDN<script>タグで読み込む

index.blade.php
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="http://malsup.github.io/jquery.blockUI.js"></script>

BlockUIの設定

$.blockUI()で画面をロックします

kakuオプションについては以下を参照してください

index.js
/**
 * BlockUI
 * ローディング・画面ブロック
 */
function ajaxBlockUi(message) {
    $.blockUI({
        message: message,
        css: {
            border: 'none',
            padding: '15px',
            backgroundColor: '#000',
            '-webkit-border-radius': '10px',
            '-moz-border-radius': '10px',
            opacity: .5,
            color: '#fff'
        }
    });
}

非同期通信処理

index.js
const AJAX_WAIT_MESSAGES = {DEMO: "Please wait..."}
const API_DEMO = '/api/hoge';

/**
 * @summary 非同期通信デモ
 */
$(document).on('click', '#demo', function (e) {
    // ローディング開始
    ajaxBlockUi(AJAX_WAIT_MESSAGES.DEMO);

    $.ajax({
        type: "POST",
        url: API_DEMO,
        data: {id: 1},
        dataType: "json",
        scriptCharset: 'utf-8'
    }).then(function (data) {
        console.log('完了したよ');

        // ローディング終了
        $.unblockUI();
    }, function (XMLHttpRequest, textStatus, errorThrown) {
        console.log("get_staff_list failed");
        console.log("XMLHttpRequest : " + XMLHttpRequest.status);
        console.log("textStatus     : " + textStatus);
        console.log("errorThrown    : " + errorThrown.message);

        // ローディング終了
        $.unblockUI();
    });
});

最後に

読んでいただきありがとうございます。
今回の記事はいかがでしたか?
・こういう記事が読みたい
・こういうところが良かった
・こうした方が良いのではないか
などなど、率直なご意見を募集しております。

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?