Heim > PHP-Framework > Laravel > Hauptteil

Implementierung einer asynchronen Laravel-Anfrage

王林
Freigeben: 2023-05-20 17:18:39
Original
1371 Leute haben es durchsucht

In Webanwendungen sind asynchrone Anfragen eine sehr nützliche Technologie. Durch die Ausführung von Anfragen im Hintergrund wird die Zeitverschwendung vermieden, die durch das Warten auf die Serverantwort am Frontend entsteht, und außerdem wird das Benutzererlebnis verbessert. Im Laravel-Framework können wir einige Methoden verwenden, um asynchrone Anforderungsfunktionen zu implementieren.

1. Was ist eine asynchrone Anfrage?

Eine asynchrone Anfrage ist eine Technologie, die eine Anfrage an den Server sendet, ohne die gesamte Seite zu aktualisieren, und die Anfrage im Hintergrund verarbeitet. Diese Technologie kann in verschiedenen Szenarien eingesetzt werden, beispielsweise wenn wir den Fortschrittsbalken einer bestimmten Aufgabe anzeigen müssen oder die Zahlungsseite automatisch aktualisiert werden soll, damit Kunden den Erfolg ihrer Zahlung spüren können.

2. So verwenden Sie asynchrone Anfragen in Laravel

1 Verwenden Sie die Ajax-Methode in jQuery, um asynchrone Anfragen zu implementieren.

Sie können es problemlos mit jQuery in Laravel verwenden, um asynchrone Anforderungsfunktionen zu implementieren. Wir können diesen Prozess durch die folgenden Schritte abschließen:

Zuerst müssen wir die jQuery-Bibliotheksdatei einführen. Dieser Schritt kann im Header oder oben in unserer HTML-Vorlage ausgeführt werden:

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

Als nächstes müssen wir den Code schreiben, um die asynchrone Anfrage zu senden. Dieses Code-Snippet kann in jede Ereignisverarbeitungsfunktion eingefügt werden, beispielsweise nachdem der Benutzer auf eine Schaltfläche geklickt hat:

$(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);
            }
        });
    });
});
Nach dem Login kopieren

2 Verwenden Sie die Warteschlangenfunktion von Laravel, um asynchrone Anforderungen zu implementieren.

Die unterste Ebene von Laravel verfügt über ein Warteschlangensystem zum Ausführen von Aufgaben im Hintergrund. Durch die Verwendung eines Warteschlangensystems können wir das Problem vermeiden, dass der Client lange auf die Antwort des Servers wartet, und wir können außerdem die Ausführung aller Hintergrundaufgaben für eine bessere Planung und Optimierung verwalten.

Als nächstes werden wir das Warteschlangensystem von Laravel verwenden, um die Verarbeitungsschritte asynchroner Anfragen zu definieren.

Zuerst müssen wir eine neue Aufgabenklasse definieren. Diese Klasse muss die native Laravel-Aufgabenklasse erben und die Methode handle() in dieser Klasse implementieren. Die Grundvorlage kann wie folgt aussehen: 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请求或电子邮件发送。

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

接下来,我们可以将异步请求的处理逻辑放在handle()

public function submitPayment(Request $request)
{
    $amount = $request->input('amount');
    $method = $request->input('payment_method');
    ProcessPayment::dispatch($amount, $method); //触发异步请求任务
    return response()->json(['message' => 'success']);
}
Nach dem Login kopieren
Als nächstes können wir die asynchrone Anforderungsverarbeitungslogik in die Methode handle() einfügen. Indem Sie diese Aufgabe im Backend ausführen, können Sie das Problem einer schlechten Benutzererfahrung vermeiden, die durch das Einfrieren von Seiten verursacht wird, und gleichzeitig wird die gesamte Anfrage nicht durch die Ausführungszeit des Backends verlangsamt.

Schließlich können wir diese Aufgabe in einer Controller-Methode auslösen, um die asynchrone Anforderungsverarbeitung zu implementieren. Zum Beispiel:

rrreee

3. Zusammenfassung

Asynchrone Anfragen spielen eine sehr wichtige Rolle bei der Entwicklung von Webanwendungen. Durch den Einsatz asynchroner Anforderungstechnologie können unsere Anwendungen schneller und reibungsloser laufen und so das Benutzererlebnis verbessern. Im Laravel-Framework können wir die Ajax-Methode von jQuery oder das Warteschlangensystem von Laravel verwenden, um asynchrone Anforderungsfunktionen zu implementieren. Egal welche Methode Sie verwenden, es ist wichtig zu bedenken: Durch asynchrone Anfragen werden Anwendungen schneller, effizienter und benutzerfreundlicher. Ich hoffe, dieser Artikel kann Ihnen bei der Implementierung asynchroner Anforderungen helfen. #🎜🎜#

Das obige ist der detaillierte Inhalt vonImplementierung einer asynchronen Laravel-Anfrage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage