ホームページ  >  記事  >  PHPフレームワーク  >  Laravelの非同期リクエストの実装

Laravelの非同期リクエストの実装

王林
王林オリジナル
2023-05-20 17:18:391374ブラウズ

Web アプリケーションでは、非同期リクエストは非常に便利なテクノロジです。リクエストをバックグラウンドで実行することにより、フロントエンドでのサーバー応答の待機による時間の無駄が回避され、ユーザー エクスペリエンスも向上します。 Laravel フレームワークでは、いくつかのメソッドを使用して非同期リクエスト関数を実装できます。

1. 非同期リクエストとは

非同期リクエストは、ページ全体を更新せずにサーバーにリクエストを送信し、バックグラウンドでリクエストを処理するテクノロジーです。このテクノロジーは、特定のタスクの進行状況バーを表示する必要がある場合や、顧客が支払いの成功を実感できるように支払いページを自動的に更新する必要がある場合など、さまざまなシナリオに適用できます。

2. Laravel で非同期リクエストを使用する方法

1. jQuery で ajax メソッドを使用して、非同期リクエストを実装します。

Laravel の jQuery で簡単に非同期リクエストの機能を実装できます。このプロセスは、次の手順で完了できます。

まず、jQuery ライブラリ ファイルを導入する必要があります。このステップは、ヘッダーまたは HTML テンプレートの先頭で実行できます。

<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>

次に、非同期リクエストを送信するコードを記述する必要があります。このコード スニペットは、ユーザーがボタンをクリックした後など、任意のイベント処理関数に含めることができます:

$(document).ready(function(){
    $('#btn-submit').click(function(e){
        e.preventDefault();
        $.ajax({
            type: 'POST',
            url: '/payment',
            data: {
                'amount': $('#amount').val(),
                'payment_method': $('#payment_method').val(),
                '_token': $('input[name="_token"]').val()
            },
            success: function(data){
                console.log('success');
                console.log(data);
                //在此处将返回的data数据展示在前端页面上
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                console.log('error');
                console.log(XMLHttpRequest);
                console.log(textStatus);
                console.log(errorThrown);
            }
        });
    });
});

2. Laravel のキュー関数を使用して、非同期リクエストを実装します。

Laravel の最下層には、バックグラウンドでタスクを実行するためのキュー システムが付属しています。キュー システムを使用すると、クライアントがサーバーの応答を長時間待つという問題を回避でき、すべてのバックグラウンド タスクの実行を管理して、より適切なスケジューリングと最適化を行うこともできます。

次に、Laravel のキュー システムを使用して、非同期リクエストの処理手順を定義します。

まず、新しいタスク クラスを定義する必要があります。このクラスは、ネイティブ Laravel タスク クラスを継承し、このクラスに handle() メソッドを実装する必要があります。基本的なテンプレートは次のとおりです。

namespace AppJobs;
use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;
use IlluminateQueueInteractsWithQueue;
use IlluminateQueueSerializesModels;

class ProcessPayment implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $amount;
    protected $paymentMethod;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($amount, $paymentMethod)
    {
        $this->amount = $amount;
        $this->paymentMethod = $paymentMethod;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //在此处执行异步请求所需的所有工作,比如HTTP请求或电子邮件发送。

        //处理请求完毕后将结果保存在数据库中,供前端页面读取。
    }
}

次に、非同期リクエストの処理ロジックを handle() メソッドに含めることができます。このタスクをバックエンドで実行すると、ページのフリーズによるユーザー エクスペリエンスの低下の問題を回避できると同時に、バックエンドの実行時間によってリクエスト全体が遅くなることがなくなります。

最後に、コントローラー メソッドでこのタスクをトリガーして、非同期リクエスト処理を実装できます。例:

public function submitPayment(Request $request)
{
    $amount = $request->input('amount');
    $method = $request->input('payment_method');
    ProcessPayment::dispatch($amount, $method); //触发异步请求任务
    return response()->json(['message' => 'success']);
}

3. 概要

非同期リクエストは、Web アプリケーションの開発において非常に重要な役割を果たします。非同期リクエストテクノロジを使用すると、アプリケーションの実行がより高速かつスムーズになり、ユーザーエクスペリエンスが向上します。 Laravel フレームワークでは、jQuery の ajax メソッドまたは Laravel のキュー システムを使用して、非同期リクエスト関数を実装できます。どの方法を使用する場合でも、非同期リクエストによりアプリケーションがより速く、より効率的に、そしてよりユーザーフレンドリーになることに留意することが重要です。この記事が非同期リクエストの実装に役立つことを願っています。

以上がLaravelの非同期リクエストの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。