2009-05-30 3 views
0

Das API-Objekt von Google Maps GGeoXML kann auf domänenübergreifende XML-Dateien (normalerweise KML oder GeoRSS) zugreifen. Es verwendet nicht XmlHttpRequest, weil es die "Zugriff auf eingeschränkten URI verweigert" Ausnahme (wie es soll). Außerdem verwendet es nicht den GXmlHttp-Wrapper von Google, weil ich es versucht habe und die gleiche URI-Ausnahme verweigert.Wie greift GGeoXML auf domänenübergreifende XML-Dateien zu?

Also verwendet GGeoXML weder XMLHttpRequest noch Googles GXMLHttp-Wrapper. Wie greift GGeoXML auf domänenübergreifende XML-Dateien zu?

+0

Duplikat von http://stackoverflow.com/questions/926137/why-dont-i-get-a-same-origin-policy-warning-when-using-the-google-maps-api/926215#926215 –

+0

Also, von dem, was ich verstanden habe GoogleMaps verwendet den 'script tag hack', um meine externe XML-Datei zu laden. Es fügt das Skript src mit seinem Proxyserver ein, der dann meine externe KML lädt und an den Client liefert. Konvertiert es zwischen XML und JSON? –

+0

Das Skript, das sie enthalten, wird nur das JavaScript-Objekt sein, das sie benötigen, und ihr benutzerdefiniertes Ereignis wird ausgelöst. xml to json Konvertierung kann sicherlich auf der Client-Seite (google 'xml zu json javascript converter') getan werden –

Antwort

1

Wenn Sie tun möchten Cross-Domain-Daten über AJAX abrufen möchten, ist die Verwendung JSONP. Es ist im Wesentlichen ein JSON-Objekt, das in einen Funktionsaufruf eingebunden ist. Wenn das JSONP-Objekt zu Ihrem Server zurückkehrt, wird die Funktion ausgeführt und analysiert den darin enthaltenen JSON-Code wieder in ein praktikables Objekt.

JSONP wurde speziell zum Zweck der Vermeidung der domänenübergreifenden Beschränkung von AJAX entwickelt.

1

Es gibt einen Proxy im Backend, der auf diese Daten "domänenübergreifend" zugreift. Dies vermeidet die domänenübergreifende Sicherheitsfunktion in Browsern.

JS-Aufruf an "fetchData" ruft einen Webdienst auf derselben Domäne auf, auf der js gehostet wird. Dieser Backend-Proxy verlässt "domänenübergreifend" und greift auf andere Informationen zu, analysiert sie und gibt sie an die Callback-Funktion des Aufrufs 'fetchData' zurück.

Verwandte Themen