Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erklärung von jsonp und Beitrag von jQuery.ajax()

Detaillierte Erklärung von jsonp und Beitrag von jQuery.ajax()

小云云
小云云Original
2018-01-06 09:19:132261Durchsuche

Früher dachte ich, dass, wenn der Datentyp von $.ajax() auf jsonp gesetzt ist, seine Methode (Anforderungsmethode) unabhängig von der Einstellung zu get wird, bis ich vor zwei Tagen auf eine Grube stieß. In diesem Artikel werden hauptsächlich relevante Informationen zum JSONP und Beitrag von jQuery.ajax () vorgestellt. Der Artikel stellt sie im Detail anhand des Beispielcodes vor, der für alle Freunde, die ihn benötigen, einen gewissen Referenz- und Lernwert hat.

Über domänenübergreifende Anfragen und JSONP

  • Domänenübergreifend: Aufgrund der Auswirkungen der Same-Origin-Richtlinie (das Protokoll, der Domänenname und der Port müssen alle gleich sein), die Ajax-Anfrage wird eingeschränkt, um diese Einschränkung zu durchbrechen, wird domänenübergreifend geboren. Es gibt viele domänenübergreifende Lösungen. Ich werde hier nicht näher darauf eingehen, sondern nur die domänenübergreifende JSONP-Lösung in der GET-Anfrage erläutern.

  • jsonp, im Wesentlichen ist jsonp keine asynchrone xhr-Anfrage, sondern fordert lediglich eine js-Datei an, sodass die domänenübergreifende Anforderung von jsonp nicht unter dem xhr-Tag im Netzwerkfenster von angezeigt werden kann chrome. Sie können es unter dem js-Tag sehen. Es besteht darin, den src im Skript-Tag zu verwenden, um nicht durch die Same-Origin-Richtlinie eingeschränkt zu werden. Das Front-End definiert eine Rückruffunktion, ruft Daten aus dem angeforderten JS-Skript ab und führt die Front-End-Rückruffunktion aus Front-End und Back-End müssen den Namen der Rückruffunktion einheitlich definieren.

  • jsonp in $.ajax, $.ajax kapselt Jsonp und sieht aus wie eine Ajax-Anfrage. Da es sich bei JSONP um eine domänenübergreifende Lösung für Get-Anfragen handelt, habe ich aus früheren Erfahrungen gelernt, dass selbst wenn der Typ auf „Post“ eingestellt ist, er bei Verwendung von JSONP automatisch in „Get“ konvertiert wird, bis ich eines Tages in eine Falle tappe. Beim Durchsehen des Quellcodes des $.ajax-Moduls habe ich festgestellt, dass nur dann „crossDomain“ auf „get“ gesetzt wird, wenn „crossDomain“ manuell auf „true“ gesetzt ist oder es sich tatsächlich um eine domänenübergreifende Domain handelt. Andernfalls füllen Sie den Typ


Fazit:

CrossDomain manuell festlegen wahr ist oder wirklich domänenübergreifend ist, wird der Typ in GET geändert, andernfalls wird der Typparameter weiterhin übergeben

Verwandte Empfehlungen:

Detaillierte Erklärung basierend auf JSONP-Prinzip

Jsonp-Prinzipien und einfache Implementierungsmethoden

Jsonp-Prinzipien, Einführung in die Methode zur Kapselung von Jsonp

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung von jsonp und Beitrag von jQuery.ajax(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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