2010-12-22 4 views
1

Ich habe eine Frage über die gleiche Herkunft Politik ...Was muss ich tun, um die JavaScript-Richtlinie für denselben Ursprung für JSON zu umgehen ... Und kann das auch für XML-Daten funktionieren?

Ich habe JavaScript-Code mit JSON und XML-Daten. Ich weiß, dass ich JSON zu JSONP ändern muss, da sich mein Server in einer anderen Domäne befindet, aber mache ich das nur auf der Client-Seite? Und was ist mit den XML-Daten? Kann das irgendwie auch domänenübergreifend geladen werden?

Schließlich, gibt es irgendwelche guten Websites, die das ausführlich erklären, mit Beispielen?

Antwort

0

Codieren Sie Ihre XML-Datei in Ihre jsonp-Antwort, und lassen Sie sie dann von Ihrem Client extrahieren und als XML interpretieren.

+0

Zum Vergleich: http: // www. west-wind.com/weblog/posts/107136.aspx. – OnesimusUnbound

0

Sie müssen den Server ändern. Sie können das JSONP-Prinzip für XML verwenden. Sie müssen nur eine Zeichenfolge übergeben:

z. Angenommen, Ihr serverseitiges Programm befindet sich unter/xmlp. Übergeben Sie einen callback Parameter, dann umschließt das Skript die XML-Ausgabe in diesem.

z.

/xmlp?callback=mycall 

Ausgänge:

mycall('<root><el attr="value"/ ></root>'); 

Sie dann die XML analysieren (in eine mycall JavaScript-Funktion übergeben wird) auf der Client-Seite.

0

Sobald sich die Datenquelle in einer anderen Domäne befindet, müssen Sie JSONP verwenden, um Daten abzurufen. Dies gilt sowohl für JSON- als auch für XML-Daten. JSONP ist nur eine Notation, die Sie für die Bereitstellung einer Callback-Funktion zur Verfügung stellt. Sie wird aufgerufen, sobald der Remote-Aufruf beendet ist. Daten werden als Rückrufparameter bereitgestellt.

Von der Ursache Sie API JSONP unterstützen muss, sobald Anfrage API enthält „? Rückruf = f“, muss es so etwas wie

{ f(data); } 

und f zurückkehren - ist Funktion auf Ihrer Seite definiert irgendwo.

Also, im Grunde als API-Aufruf beendet, rufen Sie Rückruffunktion aufgerufen wird.

Sie haben mehrere Möglichkeiten API von unterschiedlicher Herkunft

  1. Mit YQL zu verwenden - http://developer.yahoo.com/yql/
  2. manuell, reine JS oder mit jQuery - http://www.beletsky.net/2010/07/json-jsonp-and-same-origin-policy-issue.html