Was ist der Unterschied zwischen XMLHttpRequest, jQuery.ajax, jQuery.post, jQuery.get

Lesezeit: 7 Minuten

Was ist der Unterschied zwischen XMLHttpRequest jQueryajax jQuerypost jQueryget
Rodrigues

Wie kann ich herausfinden, welche Methode für eine Situation am besten geeignet ist? Kann jemand einige Beispiele geben, um den Unterschied in Bezug auf Funktionalität und Leistung zu erkennen?

  • In Bezug auf Leistungen (kaum beantwortet): gem jsperf Die Verwendung des regulären XMLHttpRequest ist viel schneller als das Durchlaufen von jQuery.

    – Déjà-vu

    24. Oktober 17 um 6:25 Uhr


  • Gibt es subtile Unterschiede in der Art und Weise, wie Cookies gehandhabt werden? Für die Anmeldung möchte ich verwenden Set-Cookie. Ich habe die Erfahrung gemacht, dass Cookies mit jQuery.ajax funktionieren, aber nicht, wenn ich XmlHttpRequest mit verwende xhr.withCredentials=true.

    – Neonauge

    11. Juli 21 um 13:53 Uhr

Was ist der Unterschied zwischen XMLHttpRequest jQueryajax jQuerypost jQueryget
Robert Koritnik

  • XMLHttpRequest ist das rohe Browserobjekt, das jQuery in eine benutzerfreundlichere und vereinfachte Form und browserübergreifende konsistente Funktionalität umschließt.

  • jQuery.ajax ist ein allgemeiner Ajax-Requester in jQuery, der alle Typen- und Inhaltsanfragen ausführen kann.

  • jQuery.get und jQuery.post andererseits können nur GET- und POST-Anforderungen ausgegeben werden. Wenn Sie nicht wissen, welche das sind, sollten Sie nachsehen HTTP-Protokoll und ein bisschen lernen. Intern werden diese beiden Funktionen verwendet jQuery.ajax Sie verwenden jedoch bestimmte Einstellungen, die Sie nicht selbst festlegen müssen, wodurch die GET- oder POST-Anfrage im Vergleich zur Verwendung vereinfacht wird jQuery.ajax. GET und POST sind sowieso die am häufigsten verwendeten HTTP-Methoden (im Vergleich zu DELETE, PUT, HEAD oder sogar anderen selten verwendeten Exoten).

Alle jQuery-Funktionen verwenden XMLHttpRequest Objekt im Hintergrund, sondern bieten zusätzliche Funktionen, die Sie nicht selbst ausführen müssen.

Verwendung

Wenn Sie also jQuery verwenden, empfehle ich Ihnen dringend, die jQuery-Funktionalität zu verwenden nur. Vergessen XMLHttpRequest insgesamt. Geeignete Variationen der jQuery-Request-Funktion verwenden und in allen anderen Fällen verwenden $.ajax(). Also vergiss nicht, dass es noch andere gibt gemeinsame jQuery Ajax-bezogene Funktionen zu $.get(), $.post() und $.ajax(). Nun, Sie können einfach verwenden $.ajax() für alle Ihre Anfragen, aber Sie müssen etwas mehr Code schreiben, weil es ein bisschen mehr Optionen braucht, um es aufzurufen.

Analogie

Es ist, als ob Sie sich einen Automotor kaufen könnten, um den Sie ein ganzes Auto mit Lenkung, Bremsen usw. bauen müssten … Autohersteller produzieren fertige Autos mit einer benutzerfreundlichen Schnittstelle (Pedale, Lenkrad usw.) Sie müssen also nicht alles selbst machen.

  • Gibt es einen Vorteil bei der Verwendung von $.ajax() in Bezug auf die Leistung?

    – Rodrigues

    13. Januar 11 um 4:33 Uhr

  • @ Rodrigues: nicht wirklich. Wenn Sie denken $.post und $.get Das einzige, was langsamer ist, ist eine kleine Menge Code davor $.ajax wird angerufen. Aber wenn Sie Ihre eigenen Routinen direkt mit XHR schreiben würden, könnten die Dinge ein wenig optimiert werden, könnten aber fehlerhafter sein. Ich schlage vor, Sie bleiben auf der jQuery-Seite. Es wird Ihr Leben leichter machen. Und angesichts der Tatsache, dass der asynchrone Aufruf viel länger dauert als der Code, der ihn ausgibt, werden Sie wahrscheinlich keinen offensichtlichen Unterschied zwischen diesen Aufrufen bemerken.

    – Robert Koritnik

    13. Januar 11 um 16:29 Uhr

  • Danke Robert Koritnik. also werde ich mit $.post und $.get bekommen.

    – Rodrigues

    14. Januar 11 um 17:30 Uhr

  • Du kannst auch mitgehen $.ajax um Ihre Anrufe überall konsistent zu machen, wenn Sie möchten. Solange Sie XHR nicht direkt verwenden, können Sie es so oder so tun.

    – Robert Koritnik

    14. Januar 11 um 17:42 Uhr


  • @RobertKoritnik, was ist mit dem Caching-Problem im IE? Ist es dasselbe, wenn XMLHttpRequest und $.ajax() verwendet werden?

    – Bhargavi Gunda

    26. Juni 13 um 10:39 Uhr

Jeder von ihnen verwendet XMLHttpRequest. Dies ist, was der Browser verwendet, um die Anfrage zu stellen. jQuery ist nur eine JavaScript-Bibliothek und die $.ajax -Methode wird verwendet, um eine XMLHttpRequest zu erstellen.

$.post und $.get sind nur Kurzversionen von $.ajax. Sie machen so ziemlich dasselbe, machen es aber schneller, eine AJAX-Anfrage zu schreiben – $.post macht eine HTTP-POST-Anforderung und $.get macht eine HTTP-GET-Anforderung.

  • Was ist mit dem Datenübertragungslimit der einzelnen Funktionen für Upload und Download?

    – Rodrigues

    13. Januar 11 um 4:38 Uhr

  • EIN GET Anfrage sendet alle Daten in der URL-Zeichenfolge – die durch Client/Server eingeschränkt werden kann (stackoverflow.com/questions/2659952/…). EIN POST -Anfragen sendet alle Daten in den Headern, daher sollte die Beschränkung der URL-Größe kein Problem darstellen (es sei denn, Sie haben eine Ja wirklich lange Datei- und Ordnernamen in Ihr Skript!).

    – Jonathon Bolster

    13. Januar 11 um 10:20 Uhr

  • OK. also kurz gesagt, du meinst, um mehr daten zu senden und mehr daten zu erhalten, richtig?

    – Rodrigues

    14. Januar 11 um 17:42 Uhr

  • @Rodrigues – Yup, so ziemlich 🙂 Im Allgemeinen, wenn Sie nur etwas lesen möchten (z. B. eine Anfrage, um eine Liste von Tweets von Twitter zu erhalten). GET. Wenn Sie etwas senden möchten (z. B. einen Tweet posten), verwenden Sie POST,

    – Jonathon Bolster

    14. Januar 11 um 19:36 Uhr

1643302868 644 Was ist der Unterschied zwischen XMLHttpRequest jQueryajax jQuerypost jQueryget
Sirius

jQuery.get ist eine Hülle für jQuery.ajax, das ein Wrapper für XMLHttpRequest ist.

XMLHttpRequest und Fetch API (derzeit experimentell) sind die einzigen in DOM, sollten also die schnellsten sein.

Ich habe viele Informationen gesehen, die nicht mehr genau sind, also habe ich eine Testseite erstellt, auf der jeder jederzeit Version für Version testen kann, welche die beste ist:

https://jsperf.com/xhr-vs-jquery-ajax-vs-get-vs-fetch

Aus meinen heutigen Tests geht hervor, dass nur jQuery keine saubere oder gar schnelle Lösung ist. Die Ergebnisse für mich auf Mobilgeräten oder Desktops zeigen, dass jQuery mindestens 80% langsamer als XHR2 ist, wenn Sie zu viel Ajax verwenden. Auf Mobilgeräten wird es viel Zeit in Anspruch nehmen, eine einfache Website zu laden.

Die Verwendung selbst steht auch im Link.

jQuery.post und jQuery.get simulieren typische Seitenladevorgänge, d. h. Sie klicken auf eine Senden-Schaltfläche und gelangen auf eine neue Seite (oder laden dieselbe Seite neu). post und get unterscheiden sich geringfügig in der Art und Weise, wie die Daten an den Server gesendet werden (ein guter Artikel darüber ist zu finden Hier.

jQuery.ajax und XMLHttpRequest sind Seitenladevorgänge ähnlich wie post und get, außer dass sich die Seite nicht ändert. Alle Informationen, die der Server zurückgibt, können von Javascript lokal verwendet werden, um auf beliebige Weise verwendet zu werden, einschließlich der Änderung des Seitenlayouts. Sie werden normalerweise verwendet, um asynchrone Arbeit zu leisten, während der Benutzer immer noch auf der Seite navigieren kann. Ein gutes Beispiel hierfür wären Funktionen zur automatischen Vervollständigung durch dynamisches Laden von Werten aus einer Datenbank, um ein Textfeld zu vervollständigen. Der grundlegende Unterschied zwischen jQuery.ajax und XMLHttpRequest besteht darin, dass jQuery.ajax XMLHttpRequest verwendet, um denselben Effekt zu erzielen, jedoch mit einer einfacheren Schnittstelle. Wenn Sie jQuery verwenden, empfehle ich Ihnen, bei jQuery.ajax zu bleiben.

Alter Beitrag. aber ich möchte trotzdem auf einen Unterschied antworten, mit dem ich bei der Arbeit konfrontiert war Web-Arbeiter(Javascript)

Webworker können keinen Zugriff auf UI-Ebene haben. Das bedeutet, dass Sie im JavaScript-Code, den Sie mit Web-Workern ausführen möchten, nicht auf DOM-Elemente zugreifen können. Auf Objekte wie window, document und parent kann im Web-Worker-Code nicht zugegriffen werden.

Wie wir wissen jQuery Die Bibliothek ist an das HTML-DOM gebunden, und ihr Zulassen würde gegen die Regel „kein DOM-Zugriff“ verstoßen. Dies kann ein wenig schmerzhaft sein, da Methoden wie z jQuery.ajax, jQuery.post, jQuery.get kann nicht in Webworkern verwendet werden. Zum Glück können Sie die verwenden
XMLHttpRequest Objekt, um Ajax-Anforderungen zu stellen.

1643302868 685 Was ist der Unterschied zwischen XMLHttpRequest jQueryajax jQuerypost jQueryget
Steve

Soweit die jQuery-Methoden gehen, .post und .get einfach tun .ajax intern besteht ihr Zweck darin, einige der unnötigen Optionen von zu abstrahieren .ajax und stellen Sie einige Standardwerte bereit, die für diese Art von Anfrage jeweils geeignet sind.

Ich bezweifle, dass es einen großen Leistungsunterschied zwischen den 3 gibt.

Der .ajax -Methode an sich eine XMLHttpRequest ausführt, wird sie wie der Rest von jQuery stark optimiert, aber wahrscheinlich nicht so effizient sein, als ob Sie die gesamte Interaktion selbst zugeschnitten hätten. Aber das ist der Unterschied zwischen dem Schreiben von viel Code und dem Schreiben jQuery.ajax.

.

662990cookie-checkWas ist der Unterschied zwischen XMLHttpRequest, jQuery.ajax, jQuery.post, jQuery.get

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy