2010-03-31 7 views
2

J'ai une liste de dates d'entraînement enregistrées dans un fichier XML, et j'ai un petit fichier javascript qui analyse toutes les dates de formation et les recrache dans une page soigneusement mise en forme. Cette solution était correcte jusqu'à ce que nous décidions que nous voulions une autre page Web sur un autre serveur pour accéder au même fichier XML.Comment analyser un fichier XML sur un serveur Web différent?

Comme je ne peux pas utiliser JavaScript pour analyser un fichier XML situé sur un autre serveur, j'ai pensé que j'utiliserais simplement un script ASP. Cependant, quand je lance ce qui suit, je reçois une réponse qu'il ya 0 noeuds correspondant à une valeur qui devrait avoir plusieurs:

<% 
Dim URL, objXML 
URL = "http://www.site.com/feed.xml" 
Set objXML = Server.CreateObject("MSXML2.DOMDocument.3.0") 
objXML.setProperty "ServerHTTPRequest", True 
objXML.async = False 
objXML.Load(URL) 

If objXML.parseError.errorCode <> 0 Then 
    Response.Write(objXML.parseError.reason) 
    Response.Write(objXML.parseError.errorCode) 
End If 

Response.Write(objXML.getElementsByTagName("era").length) 
%> 

Ma question est double:

  1. Est il y a un moyen Je peux utiliser java-script pour analyser un fichier XML distant
  2. Sinon, pourquoi mon code ne me donne pas la bonne réponse?

Répondre

1

Est-ce il y a une manière que je peux utiliser java-script pour analyser un fichier XML distant

Pour contourner les restrictions SOP, vous pouvez le faire de la même façon, comme il l'a fait avec JSONP (juste au lieu d'envoyer XML)

http://en.wikipedia.org/wiki/JSONP#JSONP

Alors vous (peut-être dynamiquement) insérer une balise de script dans votre page:

<script type="text/javascript" 
     src="http://otherdomain.com/getXml?jsonp=parseXml"> 
</script> 

Et le serveur retournerait ce contenu:

parseXml("<?xml version=\"1.0\">..."); 

Ensuite, il suffit de définir une fonction parseXml(xmlStr) dans votre script (mais je pense que vous avez déjà un).

+0

Nice. J'aime cette approche aussi. Merci Chris_I. – Stevko