Heim Web-Frontend js-Tutorial Detaillierte Erläuterung der Beispiele für das Senden asynchroner Datenanforderungen durch natives JS

Detaillierte Erläuterung der Beispiele für das Senden asynchroner Datenanforderungen durch natives JS

Jun 17, 2017 pm 05:24 PM
javascript 原生 发送 异步 数据 请求

In diesem Artikel werden hauptsächlich die relevanten Informationen zu nativem JS zum Senden asynchroner Datenanforderungen im Detail vorgestellt. Es hat einen gewissen Referenzwert.

Bei der Arbeit an Projekten ist dies manchmal erforderlich Verwenden Sie asynchrone Datenanforderungen. Wenn jedoch zu diesem Zeitpunkt keine Framework-Abhängigkeit besteht, müssen Sie natives JS für asynchrone Datenanforderungen verwenden. Derzeit gibt es nur zwei Anforderungsmethoden: eine ist AJAX und die andere ist JSONP. Einfache Kapselung asynchroner Anfragen durch natives JS.

AJAX

AJAX ist eine Datenanforderungsmethode, die die Daten von Teilseiten aktualisieren kann, ohne die gesamte Seite zu aktualisieren. Der technische Kern von AJAX ist das XMLHttpRequest-Objekt. Der Hauptanforderungsprozess ist wie folgt:

  • XMLHttpRequest-Objekt erstellen (neu)

  • Verbinden mit der Server (offen)

  • Anfrage senden (senden)

  • Antwortdaten empfangen (onreadystatechange)

Nicht sprechen Fügen Sie den Code direkt ein


/**
* 通过JSON的方式请求
* @param {[type]} params [description]
* @return {[type]}  [description]
*/
ajaxJSON(params) {
 params.type = (params.type || 'GET').toUpperCase();
 params.data = params.data || {};
 var formatedParams = this.formateParams(params.data, params.cache);
 var xhr;
 //创建XMLHttpRequest对象
 if (window.XMLHttpRequest) {
  //非IE6
  xhr = new XMLHttpRequest();
 } else {
  xhr = new ActiveXObject('Microsoft.XMLHTTP');
 }
 //异步状态发生改变,接收响应数据
 xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
   if (!!params.success) {
    if (typeof xhr.responseText == 'string') {
     params.success(JSON.parse(xhr.responseText));
    } else {
     params.success(xhr.responseText);
    }
   }
  } else {
   params.error && params.error(status);
  }
 }
 if (params.type == 'GET') {
  //连接服务器
  xhr.open('GET', (!!formatedParams ? params.url + '?' + formatedParams : params.url), true);
  //发送请求
  xhr.send();
 } else {
  //连接服务器
  xhr.open('POST', params.url, true);
  xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  //发送请求
  xhr.send(formatedParams);
 }
},
/**
* 格式化数据
* @param {Obj}  data 需要格式化的数据
* @param {Boolean} isCache 是否加入随机参数
* @return {String}   返回的字符串
*/
formateParams: function(data, isCache) {
 var arr = [];
 for (var name in data) {
  arr.push(encodeURIComponent(name) + '=' + encodeURIComponent(data[name]));
 }
 if (isCache) {
  arr.push('v=' + (new Date()).getTime());
 }
 return arr.join('&');
}
Nach dem Login kopieren

IE7 und höher unterstützen das native XHR-Objekt, sodass Sie es direkt verwenden können: var oAjax = neues XMLHttpRequest();. In IE6 und früheren Versionen wird das XHR-Objekt über ein ActiveXObject-Objekt in der MSXML-Bibliothek implementiert.

Stellen Sie über die offene Funktion von xhr eine Verbindung zum Server her, die hauptsächlich drei Parameter empfängt: Anforderungsmethode, Anforderungsadresse und ob asynchron angefordert werden soll (normalerweise asynchrone Anforderung). Es gibt zwei Anforderungsmethoden: GET und POST. GET sendet Daten über die URL an den Server, und POST sendet die Daten als Parameter der Sendemethode an den Server.

Binden Sie die Statusänderungsfunktion onreadystatechange an xhr, die hauptsächlich zum Erkennen von Änderungen im readyState von xhr verwendet wird. Wenn die asynchrone Übertragung erfolgreich ist, ändert sich der Wert von readyState von 0 auf 4 und das Ereignis onreadystatechange wird gleichzeitig ausgelöst. Die Attribute und entsprechenden Zustände von readyState lauten wie folgt:

0 (nicht initialisiert) Das Objekt wurde eingerichtet, aber nicht initialisiert (die offene Methode wurde noch nicht aufgerufen)
1 (Initialisiert) Das Objekt wurde eingerichtet, aber die Sendemethode wurde noch nicht aufgerufen
2 (Daten senden) Die Sendemethode wurde aufgerufen, aber der aktuelle Status und der HTTP-Header sind unbekannt
3 (Daten werden übertragen) Teil von Die Daten wurden empfangen, da die Antwort und der HTTP-Header unvollständig sind. Zu diesem Zeitpunkt wird der Fehler
4 (Complete) angezeigt, der den Datenempfang abgeschlossen hat Antwortdaten können über ResponseBody und ResponseText

abgerufen werden. Bestimmen Sie im readystatechange-Ereignis zunächst, ob die Antwort empfangen wurde, und stellen Sie dann fest, ob der Server die Anforderung xhr.status erfolgreich verarbeitet hat > Statuscode . Statuscodes, die mit 2 beginnen, bedeuten, dass sie aus dem Cache stammen. Der obige Code fügt jeder Anfrage eine Zufallszahl hinzu, sodass dieser Status nicht abgerufen werden muss beurteilt werden.

JSONP

Wenn Sie weiterhin das obige XMLHttpRequest-Objekt zum Senden domänenübergreifender Anforderungen verwenden, ist der Status von xhr trotz Aufruf der Sendefunktion immer 0 und Das onreadystatechange-Ereignis wird zu diesem Zeitpunkt nicht ausgelöst. Die JSONP-Anforderungsmethode wird verwendet.


JSONP (JSON with Padding) ist eine domänenübergreifende Anforderungsmethode. Das Hauptprinzip besteht darin, die domänenübergreifende Anforderungsfunktion des Skript-Tags zu nutzen, die Anforderung über das src-Attribut an den Server zu senden, der Server den JS-Code zurückgibt, die Webseite die Antwort akzeptiert und sie dann direkt ausführt. Dies entspricht dem Prinzip der Referenzierung externer Dateien über das Skript-Tag.


JSONP besteht aus zwei Teilen:

Rückruffunktion und Daten. Die Rückruffunktion wird im Allgemeinen von der Webseite gesteuert und als Parameter an den Server gesendet und Daten. Rückgabe als String.

Beispielsweise erstellt die Webseite ein Skript-Tag und weist seinen src-Wert

http://www.test.com/json/?callback=process zu Zeit, die Webseite Stellen Sie einfach eine Anfrage. Der Server kombiniert die zurückzugebenden Daten als Parameter der Funktion . Das vom Server zurückgegebene Datenformat ähnelt „process({'name:'xieyufei'})“. Antwortwert, da die Anforderung ein Skript ist und daher dem direkten Aufruf der Prozessmethode und der Übergabe eines Parameters entspricht.

Veröffentlichen Sie den Code direkt, ohne etwas zu sagen.


/**
* 通过JSONP的方式请求
* @param {[type]} params [description]
* @return {[type]}  [description]
*/
ajaxJSONP(params) {
 params.data = params.data || {};
 params.jsonp = params.jsonp || 'callback';
 // 设置传递给后台的回调参数名和参数值
 var callbackName = 'jsonp_' + (new Date()).getTime();
 params.data[params.jsonp] = callbackName;
 var formatedParams = this.formateParams(params.data, params.cache);
 //创建script标签并插入到页面中
 var head = document.getElementsByTagName('head')[0];
 var script = document.createElement('script');
 head.appendChild(script);
 //创建jsonp回调函数 
 window[callbackName] = function(json) {
  head.removeChild(script);
  clearTimeout(script.timer);
  window[callbackName] = null;
  params.success && params.success(json);
 };
 //发送请求 
 script.src = (!!formatedParams ? params.url + '?' + formatedParams : params.url);
 //为了得知此次请求是否成功,设置超时处理
 if (params.time) {
  script.timer = setTimeout(function() {
   window[callbackName] = null;
   head.removeChild(script);
   params.error && params.error({
    message: '超时'
   });
  }, params.time);
 }
}
Nach dem Login kopieren
Wenn das src-Attribut auf das Skript-Tag gesetzt ist, sendet der Browser eine Anfrage, kann die Anfrage jedoch nur einmal senden, was dazu führt, dass das Skript-Tag aktiviert wird nicht wiederverwendet werden, also jedes Mal Das Skript-Tag muss nach dem Vorgang entfernt werden. Bevor der Browser eine Anfrage sendet, binden Sie global eine Rückruffunktion. Diese Rückruffunktion wird aufgerufen, wenn die Datenanforderung erfolgreich ist.

Zusammenfassung

Integrieren Sie die beiden Methoden zum Senden asynchroner Daten und bestimmen Sie anhand des Datentyps, welche Methode verwendet werden soll. Fügen Sie den vollständigen Code ein


Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Beispiele für das Senden asynchroner Datenanforderungen durch natives JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verwenden Sie ddrescue, um Daten unter Linux wiederherzustellen Verwenden Sie ddrescue, um Daten unter Linux wiederherzustellen Mar 20, 2024 pm 01:37 PM

DDREASE ist ein Tool zum Wiederherstellen von Daten von Datei- oder Blockgeräten wie Festplatten, SSDs, RAM-Disks, CDs, DVDs und USB-Speichergeräten. Es kopiert Daten von einem Blockgerät auf ein anderes, wobei beschädigte Blöcke zurückbleiben und nur gute Blöcke verschoben werden. ddreasue ist ein leistungsstarkes Wiederherstellungstool, das vollständig automatisiert ist, da es während der Wiederherstellungsvorgänge keine Unterbrechungen erfordert. Darüber hinaus kann es dank der ddasue-Map-Datei jederzeit gestoppt und fortgesetzt werden. Weitere wichtige Funktionen von DDREASE sind: Es überschreibt die wiederhergestellten Daten nicht, füllt aber die Lücken im Falle einer iterativen Wiederherstellung. Es kann jedoch gekürzt werden, wenn das Tool explizit dazu aufgefordert wird. Stellen Sie Daten aus mehreren Dateien oder Blöcken in einer einzigen wieder her

Open Source! Jenseits von ZoeDepth! DepthFM: Schnelle und genaue monokulare Tiefenschätzung! Open Source! Jenseits von ZoeDepth! DepthFM: Schnelle und genaue monokulare Tiefenschätzung! Apr 03, 2024 pm 12:04 PM

0.Was bewirkt dieser Artikel? Wir schlagen DepthFM vor: ein vielseitiges und schnelles generatives monokulares Tiefenschätzungsmodell auf dem neuesten Stand der Technik. Zusätzlich zu herkömmlichen Tiefenschätzungsaufgaben demonstriert DepthFM auch hochmoderne Fähigkeiten bei nachgelagerten Aufgaben wie dem Tiefen-Inpainting. DepthFM ist effizient und kann Tiefenkarten innerhalb weniger Inferenzschritte synthetisieren. Lassen Sie uns diese Arbeit gemeinsam lesen ~ 1. Titel der Papierinformationen: DepthFM: FastMonocularDepthEstimationwithFlowMatching Autor: MingGui, JohannesS.Fischer, UlrichPrestel, PingchuanMa, Dmytr

Google ist begeistert: JAX-Leistung übertrifft Pytorch und TensorFlow! Es könnte die schnellste Wahl für das GPU-Inferenztraining werden Google ist begeistert: JAX-Leistung übertrifft Pytorch und TensorFlow! Es könnte die schnellste Wahl für das GPU-Inferenztraining werden Apr 01, 2024 pm 07:46 PM

Die von Google geförderte Leistung von JAX hat in jüngsten Benchmark-Tests die von Pytorch und TensorFlow übertroffen und belegt bei 7 Indikatoren den ersten Platz. Und der Test wurde nicht auf der TPU mit der besten JAX-Leistung durchgeführt. Obwohl unter Entwicklern Pytorch immer noch beliebter ist als Tensorflow. Aber in Zukunft werden möglicherweise mehr große Modelle auf Basis der JAX-Plattform trainiert und ausgeführt. Modelle Kürzlich hat das Keras-Team drei Backends (TensorFlow, JAX, PyTorch) mit der nativen PyTorch-Implementierung und Keras2 mit TensorFlow verglichen. Zunächst wählen sie eine Reihe von Mainstream-Inhalten aus

Langsame Internetgeschwindigkeiten für Mobilfunkdaten auf dem iPhone: Korrekturen Langsame Internetgeschwindigkeiten für Mobilfunkdaten auf dem iPhone: Korrekturen May 03, 2024 pm 09:01 PM

Stehen Sie vor einer Verzögerung oder einer langsamen mobilen Datenverbindung auf dem iPhone? Normalerweise hängt die Stärke des Mobilfunk-Internets auf Ihrem Telefon von mehreren Faktoren ab, wie z. B. der Region, dem Mobilfunknetztyp, dem Roaming-Typ usw. Es gibt einige Dinge, die Sie tun können, um eine schnellere und zuverlässigere Mobilfunk-Internetverbindung zu erhalten. Fix 1 – Neustart des iPhone erzwingen Manchmal werden durch einen erzwungenen Neustart Ihres Geräts viele Dinge zurückgesetzt, einschließlich der Mobilfunkverbindung. Schritt 1 – Drücken Sie einfach einmal die Lauter-Taste und lassen Sie sie los. Drücken Sie anschließend die Leiser-Taste und lassen Sie sie wieder los. Schritt 2 – Der nächste Teil des Prozesses besteht darin, die Taste auf der rechten Seite gedrückt zu halten. Lassen Sie das iPhone den Neustart abschließen. Aktivieren Sie Mobilfunkdaten und überprüfen Sie die Netzwerkgeschwindigkeit. Überprüfen Sie es erneut. Fix 2 – Datenmodus ändern 5G bietet zwar bessere Netzwerkgeschwindigkeiten, funktioniert jedoch besser, wenn das Signal schwächer ist

Wie sende ich Dateien an andere auf TikTok? Wie lösche ich an andere gesendete Dateien? Wie sende ich Dateien an andere auf TikTok? Wie lösche ich an andere gesendete Dateien? Mar 22, 2024 am 08:30 AM

Auf Douyin können Benutzer nicht nur ihre Lebensdetails und Talente teilen, sondern auch mit anderen Benutzern interagieren. In diesem Prozess müssen wir manchmal Dateien wie Bilder, Videos usw. an andere Benutzer senden. Wie kann man also auf Douyin Dateien an andere senden? 1. Wie kann ich auf Douyin Dateien an andere senden? 1. Öffnen Sie Douyin und rufen Sie die Chat-Oberfläche auf, an die Sie Dateien senden möchten. 2. Klicken Sie in der Chat-Oberfläche auf das „+“-Zeichen und wählen Sie „Datei“. 3. In den Dateioptionen können Sie auswählen, ob Sie Bilder, Videos, Audiodateien und andere Dateien senden möchten. Nachdem Sie die Datei ausgewählt haben, die Sie senden möchten, klicken Sie auf „Senden“. 4. Warten Sie, bis die andere Partei Ihre Datei akzeptiert. Sobald die andere Partei sie akzeptiert, wird die Datei erfolgreich übertragen. 2. Wie lösche ich Dateien, die auf Douyin an andere gesendet wurden? 1. Öffnen Sie Douyin und geben Sie den von Ihnen gesendeten Text ein.

Die Vitalität der Superintelligenz erwacht! Aber mit der Einführung der sich selbst aktualisierenden KI müssen sich Mütter keine Sorgen mehr über Datenengpässe machen Die Vitalität der Superintelligenz erwacht! Aber mit der Einführung der sich selbst aktualisierenden KI müssen sich Mütter keine Sorgen mehr über Datenengpässe machen Apr 29, 2024 pm 06:55 PM

Ich weine zu Tode. Die Daten im Internet reichen überhaupt nicht aus. Das Trainingsmodell sieht aus wie „Die Tribute von Panem“, und KI-Forscher auf der ganzen Welt machen sich Gedanken darüber, wie sie diese datenhungrigen Esser ernähren sollen. Dieses Problem tritt insbesondere bei multimodalen Aufgaben auf. Zu einer Zeit, als sie ratlos waren, nutzte ein Start-up-Team der Abteilung der Renmin-Universität von China sein eigenes neues Modell, um als erstes in China einen „modellgenerierten Datenfeed selbst“ in die Realität umzusetzen. Darüber hinaus handelt es sich um einen zweigleisigen Ansatz auf der Verständnisseite und der Generierungsseite. Beide Seiten können hochwertige, multimodale neue Daten generieren und Datenrückmeldungen an das Modell selbst liefern. Was ist ein Modell? Awaker 1.0, ein großes multimodales Modell, das gerade im Zhongguancun-Forum erschienen ist. Wer ist das Team? Sophon-Motor. Gegründet von Gao Yizhao, einem Doktoranden an der Hillhouse School of Artificial Intelligence der Renmin University.

Tesla-Roboter arbeiten in Fabriken, Musk: Der Freiheitsgrad der Hände wird dieses Jahr 22 erreichen! Tesla-Roboter arbeiten in Fabriken, Musk: Der Freiheitsgrad der Hände wird dieses Jahr 22 erreichen! May 06, 2024 pm 04:13 PM

Das neueste Video von Teslas Roboter Optimus ist veröffentlicht und er kann bereits in der Fabrik arbeiten. Bei normaler Geschwindigkeit sortiert es Batterien (Teslas 4680-Batterien) so: Der Beamte hat auch veröffentlicht, wie es bei 20-facher Geschwindigkeit aussieht – auf einer kleinen „Workstation“, pflücken und pflücken und pflücken: Dieses Mal wird es freigegeben. Eines der Highlights Der Vorteil des Videos besteht darin, dass Optimus diese Arbeit in der Fabrik völlig autonom und ohne menschliches Eingreifen während des gesamten Prozesses erledigt. Und aus Sicht von Optimus kann es auch die krumme Batterie aufnehmen und platzieren, wobei der Schwerpunkt auf der automatischen Fehlerkorrektur liegt: In Bezug auf die Hand von Optimus gab der NVIDIA-Wissenschaftler Jim Fan eine hohe Bewertung ab: Die Hand von Optimus ist der fünffingrige Roboter der Welt am geschicktesten. Seine Hände sind nicht nur taktil

Der erste Roboter erscheint, der menschliche Aufgaben autonom erledigt, mit fünf flexiblen Fingern und übermenschlicher Geschwindigkeit, und große Modelle unterstützen das Training im virtuellen Raum Der erste Roboter erscheint, der menschliche Aufgaben autonom erledigt, mit fünf flexiblen Fingern und übermenschlicher Geschwindigkeit, und große Modelle unterstützen das Training im virtuellen Raum Mar 11, 2024 pm 12:10 PM

Diese Woche gab FigureAI, ein Robotikunternehmen, an dem OpenAI, Microsoft, Bezos und Nvidia beteiligt sind, bekannt, dass es fast 700 Millionen US-Dollar an Finanzmitteln erhalten hat und plant, im nächsten Jahr einen humanoiden Roboter zu entwickeln, der selbstständig gehen kann. Und Teslas Optimus Prime hat immer wieder gute Nachrichten erhalten. Niemand zweifelt daran, dass dieses Jahr das Jahr sein wird, in dem humanoide Roboter explodieren. SanctuaryAI, ein in Kanada ansässiges Robotikunternehmen, hat kürzlich einen neuen humanoiden Roboter auf den Markt gebracht: Phoenix. Beamte behaupten, dass es viele Aufgaben autonom und mit der gleichen Geschwindigkeit wie Menschen erledigen kann. Pheonix, der weltweit erste Roboter, der Aufgaben autonom in menschlicher Geschwindigkeit erledigen kann, kann jedes Objekt sanft greifen, bewegen und elegant auf der linken und rechten Seite platzieren. Es kann Objekte autonom identifizieren

See all articles