Frage

Ich habe eine vorhandene jQuery-Plugin, das eine Menge von AJAX Anrufe macht (meistens JSON). Ich frage mich, was die schnellste ist, damit es Cross-Site-Anrufe das heißt, die $ .get und $ .post URL zu tun, wird nicht aus der gleichen Domäne sein.

Ich habe von JSONP gehört, aber frage mich, ob jemand mir ein konkretes Beispiel geben könnte über den gesamten Prozess zu gehen. Ich möchte nur minimale Änderungen, wenn möglich, mein Skript machen. Soll ich eine proxy.php der Art verwenden?

Vielen Dank für Ihre Zeit.

War es hilfreich?

Lösung

JSONP ermöglicht es Ihnen, Cross-Site-Anrufe zu tun. Siehe jQuery docs auf diese Angelegenheit.

Das Konzept ist einfach: Statt eines normalen Ajax-Aufruf zu tun, jQuery ein <script> Tag zu Ihrem <head> anhängen wird. Damit dies funktioniert, Ihre Bedürfnisse JSON-Daten in einem zu verpackenden Funktionsaufruf.

Der Server braucht Informationen in einer solchen Art und Weise (PHP Beispiel) senden:

$json = json_encode($data);
echo $_GET['jsonp_callback'] . '(' . $json . ');';

Dann können Sie jQuery verwenden, um diese Informationen zu holen:

$.ajax({
  dataType: 'jsonp',
  jsonp: 'jsonp_callback',
  url: 'http://myotherserver.com/getdata',
  success: function () {
    // do stuff
  },
});

Weitere Informationen finden sie hier: Was ist JSONP ?

Andere Tipps

Wenn Sie die Kontrolle über die Remote-Domäne oder die Remote-Domäne hat eine permissive domänenübergreif. xml in einer Bibliothek wie flXHR in Verbindung mit jQuery-Plugin

Sie können auch CORS anstelle von JSONP, arbeitet mit ff, Chrom, Safari. CORS ist weniger mühsam zu installieren und erfordert nur einen Filter in Server-Seite.

Bitte gehen Sie durch diese article.Well erklärt und ähnliche. Einzige Einschränkung ist nicht IE nicht und ältere Versionen von FF unterstützen, Chrom hat auch einige Probleme.

http: //techblog.constantcontact .com / Software-Entwicklung / mit-cors-for-Cross-Domain-ajax-Anfragen /

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top