jQuery AJAX Cross-Domain Communication
Domainübergreifende AJAX-Anfragen unterliegen aufgrund von Same-Origin-Policy-Einschränkungen Einschränkungen. Wenn ein Client-Skript in einer Domäne versucht, auf Ressourcen aus einer anderen Domäne zuzugreifen, schlägt dies normalerweise aufgrund von Sicherheitsbedenken fehl.
Fall:
Betrachten Sie den Fall, in dem getestet wird. php befindet sich auf einem Localhost, während testserver.php auf einem Webserver gehostet wird. Eine AJAX-Anfrage von test.php an testserver.php schlägt fehl und löst aufgrund der domänenübergreifenden Natur der Anfrage eine „Fehler“-Warnung aus.
Lösung:
Um diese Einschränkung zu überwinden, kann JSONP (JSON mit Padding) verwendet werden beschäftigt.
jQuery:
$.ajax({ url: "testserver.php", dataType: "jsonp", // Note the lowercase 'p' in JSONP success: function (json) { // Handle successful response alert("Success"); }, error: function () { alert("Error"); } });
PHP:
<?php $arr = array("element1", "element2", array("element31", "element32")); $arr['name'] = "response"; echo $_GET['callback'] . "(" . json_encode($arr) . ");"; ?>
In PHP wird der Name der Callback-Funktion übergeben von jQuery ist über $_GET['callback'] verfügbar. Durch das Echo einer Antwort im Format „callbackName('jsonString')“ ermöglichen wir jQuery, die JSON-Daten zu interpretieren.
Alternative:
jQuery bietet eine Kurzschriftmethode namens $.getJSON(), was domänenübergreifende AJAX-Anfragen vereinfacht. Es ist jedoch das Anhängen von „callback=?“ erforderlich. als GET-Parameter an die URL angehängt. jQuery ersetzt diesen Platzhalter automatisch durch seine generierte Callback-Methode.
Das obige ist der detaillierte Inhalt vonWie kann jQuery AJAX Same-Origin-Richtlinienbeschränkungen für die domänenübergreifende Kommunikation überwinden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!