Question

Je suis en train de récupérer des données JSON à partir d'un site distant avec Rails / Prototype.

J'ai trouvé qu'il ya une branche de Prototype qui a une fonction Ajax.JSONRequest(). Je ne peux pas obtenir ce travail.

jQuery a une fonction $.getJSON(), mais je suis en utilisant des fonctions de Prototype et je préfère ne pas passer à jQuery ou ne pas utiliser le mode de conflit.

Qu'est-ce que je manque? Il semble que ce serait facile à faire avec Rails ou Prototype.

Était-ce utile?

La solution

Avez-vous besoin d'utiliser les aides Rails pour faire la demande du client JSON? Il est facile avec Prototype

new Ajax.Request('/some_url', { method:'get', onSuccess: function(transport){ var json = transport.responseText.evalJSON(); } });

Vous devez juste vous assurer que / some_url répond avec JSON à un XHTTPRequest (de préférence en utilisant respond_to ?, mais vous pouvez également vérifier request.xhr?), En utilisant la méthode Object # Rails de to_json.

Autres conseils

Vous pouvez également utiliser la middlware rack JSONP qui est disponible dans le rack-contrib. Cela vous donne la possibilité de simplement ajouter & rappel = méthode à votre chaîne de requête et ont la réponse de rails enveloppés dans votre méthode de rappel.

Il suffit d'ajouter ceci à votre application.rb:

require "rack/contrib/jsonp"

class Application < Rails::Application
  config.middleware.use Rack::JSONP
end

rien construit dans les rails spécifiquement pour jsonp, mais il y a une ou deux choses que vous pourriez faire si vous voulez vos rails app pour jouer agréable avec jsonp.

  • créer un type MIME-jsonp dans config / initializers / mime_types.rb
  • étendre objet avec une méthode de to_jsonp qui envelopper les appels à JSON dans votre rappel passé. quelque chose comme:

def to_jsonp (rappel, options = {})   "# {} Rappel (# {self.to_json (options)})" fin

  • suivre cet article gars.

http://blogs.sitepoint.com / 2006/10/05 / JSON-p-sortie-avec-rails /

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top