2010-10-26 5 views
0

J'ai une application rails et je veux analyser la réponse xml de l'API en utilisant Javascript (ajax). J'ai essayé:Parse Réponse XML de l'API, Javascript, Ajax

$(document).ready(function() 
{ 
    $.ajax({ 
    type: "GET", 
    url: "http://localhost:3000/users/mike.xml",         
    dataType: "xml", 
    success: parseXml 

    }); 
}); 

function parseXml(xml) 
{ 
... 
} 

mais ne fonctionnent pas. Quand je change le 'url' avec un fichier xml local e.x url: 'data.xml', fonctionne très bien!

Comment puis-je analyser cette réponse?

toute aide sera très appréciée :-)

+1

Voir http://stackoverflow.com/questions/1077218/are-different-ports-on-the-same-server-considered-cross-domain-ajax-wise –

+0

Pas ce que je cherche! – Lamp

+0

Pouvez-vous poster votre contrôleur qui génère le XML et aussi Publier la sortie de firebug (envoie-t-il la requête au serveur et si oui quelle est la réponse) –

Répondre

0

Comme Max a suggéré, il serait très utile d'installer et d'utiliser Firebug dans un navigateur Firefox afin que vous puissiez regarder la demande GET et la réponse. Il n'y a pas beaucoup de choses à faire à partir de votre question, mais cela ressemble à un problème du côté "serveur".

Lorsque vous dites que cela ne fonctionne pas, voulez-vous dire que parseXml (xml) n'est pas appelé? Dans votre requête AJAX, vous définissez un gestionnaire de succès - si votre requête GET échoue, ce gestionnaire n'est jamais appelé. J'ai trouvé qu'il est plus utile de définir le callback général ('complet' pour JQuery, que vous utilisez) car il sera appelé quelle que soit la réponse. Ensuite, vous vérifiez vous-même pour le succès ou l'échec vous-même et prendre les mesures appropriées. Essayez de supprimer le ".xml" de votre URL.

+0

je veux dire qui ne renvoie aucune réponse xml .. – Lamp

+0

firebug sortie de la console: GET http: // localhost: 3000/utilisateurs/mike.xml \t 200 OK \t \t 298ms \t jquery.min.js (ligne 130) ParamsHeadersPostPutResponseCacheHTMLXML (une chaîne vide) – Lamp

+0

Quand j'appelle à partir du navigateur http: // localhost: 3000/users/mike.xml mon xml renvoie normal – Lamp

0

Je crois que les appels AJAX acceptent la réponse xml par défaut, donc avoir xml dans votre en-tête de demande aussi bien que votre URL pourrait confondre le contrôleur. C'est juste une supposition cependant.

+0

rien .. Il semble que le seul moyen est jsonp (json avec remplissage). Je peux saisir cette réponse, mais avec 1error dans ma console firebug ... (étiquette invalide) – Lamp

+0

Votre contrôleur fait-il format.xml {render: => @ object.to_xml} ou envoie-t-il un template xml? – Samo

0

Si l'URL n'est pas sur le même domaine que votre page avec JavaScript, votre navigateur l'empêchera de fonctionner en raison de la politique de sécurité inter-domaines. Vérifiez que vous affichez la page via une URL qui ressemble exactement à celle que vous demandez dans votre appel ajax (donc, dans l'exemple localhost, assurez-vous que vous n'utilisez pas votre serveur sur une URL 127.0.0.1, ou quelque chose comme que)