jQuery AJAX Cross-Domain-Dilemma: CORS mit JSONP umgehen
Die Interaktion mit Daten über verschiedene Domänen hinweg stellt aufgrund der ursprungsübergreifenden Ressourcenfreigabe eine Herausforderung dar (CORS)-Einschränkungen. Wenn Sie versuchen, eine AJAX-Anfrage von einer Domäne zu einer anderen auszuführen, z. B. test.php auf localhost und testserver.php auf einem Remote-Server, erzwingen Browser diese Einschränkungen, was zu „Fehler“-Warnungen führt.
Um dies zu umgehen Hindernis stellt sich JSONP (JSON with Padding) als praktikable Problemumgehung heraus. Es nutzt die Flexibilität von Skriptelementen, um Daten über Domänen hinweg abzurufen.
jQuery-Änderungen:
Ändern Sie test.php, um JSONP zu verwenden, indem Sie den dataType-Parameter in „jsonp“ ändern.
PHP-Änderungen:
Passen Sie testserver.php an, um das JSONP widerzuspiegeln Antwort mit dem von jQuery bereitgestellten Rückruf.
Implementierung:
jQuery (test.php):
$.ajax({ url: "testserver.php", dataType: 'jsonp', // Notice! JSONP <-- P (lowercase) success: function(json){ // do stuff with json (in this case an array) alert("Success"); }, error: function(){ alert("Error"); } });
PHP (testserver.php):
<?php $arr = array("element1", "element2", array("element31", "element32")); $arr['name'] = "response"; echo $_GET['callback'] . "(" . json_encode($arr) . ");"; ?>
Vereinfachte Methode mit $.getJSON():
Alternativ können Sie die Kurzformmethode $.getJSON() verwenden, die automatisch hängt 'callback=?' an an die URL als GET-Parameter.
$.getJSON("testserver.php", function(json){ // do stuff with json (in this case an array) alert("Success"); });
Das obige ist der detaillierte Inhalt vonWie kann JSONP die domänenübergreifenden AJAX-Probleme von jQuery lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!