Heim > Web-Frontend > js-Tutorial > Hauptteil

So implementieren Sie Ajax- und Ajax-Cross-Domain-Anfragen in JS

亚连
Freigeben: 2018-06-23 14:31:10
Original
1291 Leute haben es durchsucht

Der unten stehende Herausgeber wird Ihnen ein Beispiel für die Implementierung von Ajax und domänenübergreifenden Ajax-Anfragen in nativem JS vorstellen. Es hat einen guten Referenzwert und ich hoffe, dass es für alle hilfreich ist. Folgen wir dem Editor, um einen Blick darauf zu werfen

1. Ajax mit nativem JS implementieren

Der erste Schritt besteht darin, das XMLHttpRequest-Objekt zu erhalten

Schritt 2: Richten Sie die Statusüberwachungsfunktion ein

Schritt 3: Öffnen Sie eine Verbindung, true ist eine asynchrone Anfrage

Schritt 4: Senden Sie eine Anfrage, Sie können ein Objekt senden und eine Zeichenfolge, keine Notwendigkeit Daten übergeben und null senden

Schritt 5: Beurteilen Sie in der Listening-Funktion readyState=4&&status=200, um anzuzeigen, dass die Anfrage erfolgreich ist

Schritt 6: Verwenden Sie ResponseText und ResponseXML um die Antwortdaten zu akzeptieren und natives JS Manipulate DOM zu verwenden, um

var ajax = new XMLHttpRequest();
ajax.onreadystatechange = function(){
 console.log(ajax.readyState);
 console.log(ajax.status);
 if(ajax.readyState==4 && ajax.status==200){
  console.log(ajax.responseText);
  console.log(ajax.responseXML);//返回不是XML,显示null
  console.log(JSON.parse(ajax.responseText));
  console.log(eval("("+ajax.responseText+")"));
  }
}
ajax.open("GET","h51701.json",true);
ajax.send(null);
Nach dem Login kopieren

anzuzeigen 2. Ajax Cross-Domain-Anfrage

[Cross-domain Anfrageverarbeitung] Aufgrund der gleichen Ursprungsrichtlinie in JS. Wenn Sie Dateien mit unterschiedlichen Protokollnamen, unterschiedlichen Portnummern und unterschiedlichen Hostnamen anfordern, verstößt dies gegen die gleiche Ursprungsrichtlinie und die Anforderung kann nicht erfolgreich sein! Eine domänenübergreifende Verarbeitung ist erforderlich!

1. Hintergrund-PHP-Einstellungen:

Im Frontend sind keine Einstellungen erforderlich. Schreiben Sie einen Header in die angeforderte PHP-Datei im Hintergrund.

header("Access-Control-Allow-Origin:*");//表示允许哪些域名请求这个PHP文件,*表示所有域名都允许
Nach dem Login kopieren

2. Verwenden Sie das src-Attribut + JSONP, um eine domänenübergreifende Funktionalität zu erreichen.

① Tags mit dem src-Attribut verfügen über eine domänenübergreifende Funktionalität! Daher können Sie das src-Attribut des Skript-Tags verwenden, um Hintergrunddaten anzufordern

<scriptsrc="http://127.0.0.1/json.php"type="text/javascript"charset="utf-8"></script>
Nach dem Login kopieren

② Da src den geladenen Inhalt nach erfolgreichem Laden der Daten direkt in das Skript-Tag einfügt

, also Der Hintergrund gibt JSON direkt zurück. Die Zeichenfolge wird im Skript-Tag nicht analysiert.

Daher sollte das Backend einen Funktionsnamen an das Frontend zurückgeben und die JSON-Zeichenfolge als Parameter übergeben.

Im Backend zurückgeben PHP-Datei:

echo"callBack({$str})";
Nach dem Login kopieren
Nach dem Login kopieren

③Das Frontend empfängt die zurückgegebene Funktion und ruft sie direkt im Skript-Tag auf. Daher ist es notwendig, eine solche Rückruffunktion als Rückruf für eine erfolgreiche Anfrage zu deklarieren.

function callBack(data){
  alert("请求成功");
  console.log(data);
 }
Nach dem Login kopieren

3. JSONP der Ajax-Implementierung

① Wenn Sie eine Ajax-Anfrage stellen, setzen Sie den dataType auf „json“

② Wenn das Backend zurückkehrt, muss die Rückruffunktion noch zurückgegeben werden. Wenn Ajax jedoch eine Anfrage sendet, verwendet es standardmäßig die Get-Anfrage, um den Namen der Rückgabefunktion an den Hintergrund zu senden. Der Hintergrund kann $_GET['callback'] verwenden, um den Namen der Callback-Funktion abzurufen:

echo"{$_GET[&#39;callback&#39;]}({$str})";
Nach dem Login kopieren

③Nachdem der Hintergrund zurückgekehrt ist, Ajax immer noch Sie können Erfolg als erfolgreiche Rückruffunktion verwenden:

success:function(data){}
Nach dem Login kopieren

Natürlich kann der Hintergrund nach Belieben auch einen Rückruffunktionsnamen zurückgeben.

echo"callBack({$str})";
Nach dem Login kopieren
Nach dem Login kopieren

Solange die Anfrage erfolgreich ist, ruft die Rezeption diese Funktion automatisch auf. Ähnlich wie bei den ②③ Schritten in Punkt 2

habe ich das oben Gesagte für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

So implementieren Sie den asynchronen Bild-Upload in Javascript

So implementieren Sie die Funktion für versteckte Elemente in jquery

So erreichen Sie Passwortkonsistenz in Verifizierungsformularen in jQuery

So verwenden Sie Array-Funktionen in JS

Informationen zur Verwendung der Auswahlkomponente im WeChat-Miniprogramm

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Ajax- und Ajax-Cross-Domain-Anfragen in JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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