Heim > Web-Frontend > Front-End-Fragen und Antworten > Analysieren Sie die Gründe und Lösungen dafür, warum die on-Methode von jQuery Ajax nicht auslösen kann

Analysieren Sie die Gründe und Lösungen dafür, warum die on-Methode von jQuery Ajax nicht auslösen kann

PHPz
Freigeben: 2023-04-17 11:39:15
Original
666 Leute haben es durchsucht

In den letzten Jahren haben Javascript und jQuery eine immer wichtigere Rolle in der Front-End-Entwicklungsarbeit gespielt. Die Fähigkeiten von jQuery spiegeln sich nicht nur in seinen hervorragenden DOM-Manipulationsfunktionen und CSS-Selektoren wider, sondern jQuery bietet auch viele leistungsstarke globale Funktionen und Ereignisse Verarbeitungsfunktionen vereinfachen den Front-End-Entwicklungsworkflow erheblich. Die on()-Methode bringt uns zweifellos viel Komfort, aber es gibt einen Sonderfall bei der Verwendung dieser Methode, nämlich, dass sie die Ajax-Anfrage nicht auslösen kann. Die Grundursache und Lösung dieses Problems werden im Folgenden ausführlich vorgestellt .

Verwendung der on()-Methode

Lassen Sie uns zunächst verstehen, wie die on()-Methode verwendet wird. Die on()-Methode kann mehrere Parameter akzeptieren. Der wichtigste davon ist der erste Parameter, der zur Angabe des Ereignistyps verwendet wird, d. h. an welches Ereignis die Ereignisbehandlungsfunktion gebunden werden muss.

Im folgenden Beispiel verwenden wir beispielsweise die on()-Methode, um ein Klickereignis zu binden.

$("button").on("click", function(){
    alert("您点击了按钮");
});
Nach dem Login kopieren

Der obige Code öffnet ein Eingabeaufforderungsfeld, nachdem wir auf die Schaltfläche geklickt haben, in dem die on()-Methode das Klickereignis als ersten Parameter übergibt.

Natürlich kann die on()-Methode auch mehrere Ereignisse gleichzeitig binden (durch Kommas getrennt) und die Ereignisbehandlungsfunktion an den zweiten Parameter übergeben. Zum Beispiel:

$("button").on("mouseenter mouseleave", function(){
    alert("您进入/离开按钮区域");
});
Nach dem Login kopieren

Der obige Code verarbeitet die Mausbewegungsereignisse der Schaltfläche gleichzeitig.

Die on()-Methode hat viele andere Parameter und Verwendungen, die hier nicht beschrieben werden. Eine ausführlichere Einführung finden Sie in der offiziellen Dokumentation von jQuery.

on()-Methode kann Ajax-Anfrage nicht auslösen? !

Zurück zum Thema dieses Artikels. Als nächstes werden wir das Problem besprechen, dass die on()-Methode keine Ajax-Anfragen auslösen kann. Schauen wir uns das folgende Beispiel an:

$("button").on("click", function(){
    $.ajax({
        url: "http://www.example.com/api",
        type: "GET",
        success: function(response){
            console.log(response);
        }
    });
});
Nach dem Login kopieren
Nach dem Login kopieren

Der obige Code versucht, API-Daten über eine Ajax-Anfrage abzurufen, wenn auf die Schaltfläche geklickt wird, und gibt die Antwort an die Konsole aus, nachdem die Anfrage erfolgreich war. Wenn wir jedoch auf die Schaltfläche klicken, stellen wir fest, dass nichts passiert und keine Ausgabe an die Konsole erfolgt.

Nach einigem Erkunden und Testen kamen wir zu dem Schluss: Die on()-Methode kann keine Ajax-Anfragen auslösen!

Die on()-Methode kann das Ladeereignis nicht binden

Warum hat die on()-Methode dieses Problem? Der Grund dafür ist, dass die on()-Methode die Ajax-Anforderung tatsächlich durch Binden von DOM-Ereignissen implementiert und vor der Übergabe der Antwortdaten an die Verarbeitungsfunktion die Daten zunächst im DOM-Knoten speichern muss. Allerdings kann jQuery das Ladeereignis nicht auf allen Knoten korrekt auslösen, was dazu führt, dass die Methode on() die Ajax-Anfrage nicht auslösen kann.

Wir können dies durch den folgenden Code bestätigen:

$("img").on("load", function(){
    console.log("图片加载完毕");
});
Nach dem Login kopieren

Der obige Code überwacht das Abschlussereignis des Bildladens und gibt eine Nachricht aus, wenn das Ereignis ausgelöst wird. Wenn wir jedoch versuchen, ein dynamisch generiertes Bild (z. B. <img src="http://www.example.com/1.png">) zu laden, werden wir feststellen, dass dieser Code nicht funktioniert und keine Informationen an die Konsole ausgegeben werden.

Lösung

Welche Methode sollten wir also verwenden, wenn die on()-Methode keine Ajax-Anfrage auslösen kann? Die Antwort besteht darin, die globale Funktion von jQuery zu verwenden – $.ajax().

Die Methode $.ajax() ist eine Funktion der untersten Ebene, die verschiedene Arten von Ajax-Anfragen implementieren kann, indem Parameter an sie übergeben werden. Beispiel:

$("button").on("click", function(){
    $.ajax({
        url: "http://www.example.com/api",
        type: "GET",
        success: function(response){
            console.log(response);
        }
    });
});
Nach dem Login kopieren
Nach dem Login kopieren

Der obige Code ruft die Funktion $.ajax() direkt auf und ruft API-Daten über die GET-Methode ab. Darüber hinaus verfügt die Funktion $.ajax() über viele weitere Parameter und Verwendungsmöglichkeiten, die hier nicht beschrieben werden. Eine ausführlichere Einführung finden Sie in der offiziellen Dokumentation von jQuery.

Zusammenfassung

Das Obige ist eine detaillierte Einführung und Lösung für das Problem, dass die on()-Methode von jQuery keine Ajax-Anfragen auslösen kann. Bei der eigentlichen Front-End-Entwicklung sollten wir die geeignete Methode basierend auf der tatsächlichen Situation auswählen, auf die Verwendung guter Dokumente und Suchmaschinen achten und unsere Fähigkeiten und Fertigkeiten kontinuierlich verbessern.

Das obige ist der detaillierte Inhalt vonAnalysieren Sie die Gründe und Lösungen dafür, warum die on-Methode von jQuery Ajax nicht auslösen kann. 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