Domanda

Sto cercando di recuperare i dati JSON da un sito remoto con Rails / Prototipo.

ho scoperto che c'è un ramo di Prototype che ha una funzione Ajax.JSONRequest(). Non riesco a far funzionare tutto questo.

jQuery ha una funzione $.getJSON(), ma sto usando alcune funzioni per prototipi e preferisco non passare a jQuery o utilizzare alcuna modalità conflitti.

Che cosa mi manca? Sembra che questo sarebbe fatto facilmente con Rails o prototipo.

È stato utile?

Soluzione

Avete bisogno di utilizzare Rails aiutanti per fare la richiesta del client JSON? È facile con Prototipo

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

Hai solo bisogno di fare in modo che / some_url risponde con JSON a un XHTTPRequest (preferibilmente utilizzando respond_to ?, ma si può anche controllare request.xhr?), Utilizzando il metodo Object # to_json Rails.

Altri suggerimenti

È inoltre possibile utilizzare il middlware cremagliera JSONP che è disponibile in rack contrib. Questo ti dà la possibilità di aggiungere solo & callback = metodo per la stringa di query e avere la risposta da rotaie avvolti nel vostro metodo di callback.

Basta aggiungere questo alla tua application.rb:

require "rack/contrib/jsonp"

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

nulla di costruito nelle guide appositamente per jsonp, ma ci sono un paio di cose che si potrebbero fare se si voleva le vostre rotaie app di bel gioco con jsonp.

  • creare un jsonp mime-type in config / inizializzatori / mime_types.rb
  • estendere oggetto con un metodo to_jsonp che vi avvolgerà chiamate a JSON nel callback passato. qualcosa di simile:

def to_jsonp (richiamata, opzioni = {})   "# {Callback} (# {self.to_json (opzioni)})" end

  • seguire questo articolo ragazzi.

http://blogs.sitepoint.com / 2006/10/05 / jSON-p-uscita-con-rails /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top