Pergunta

Estou tentando recuperar dados JSON de um site remoto com Rails/Prototype.

Eu descobri que há um ramo do protótipo isso tem um Ajax.JSONRequest() função. Não consigo fazer isso funcionar.

jQuery tem um $.getJSON() Função, mas estou usando algumas funções de protótipo e prefiro não mudar para o jQuery ou não usar o modo de conflito.

o que estou perdendo? Parece que isso seria facilmente feito com trilhos ou protótipo.

Foi útil?

Solução

Você precisa usar ajudantes de Rails para fazer o cliente solicitar JSON? É fácil com Protótipo

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

Você só precisa se certificar de que /Some_URL responde com o JSON a um XHTTPRequest (de preferência usando o respondente?

Outras dicas

Você também pode usar o JSONP Rack Middlware disponível no Rack-Contrib. Isso oferece a capacidade de apenas anexar e chamar o método da sua sequência de consultas e ter a resposta dos Rails embrulhados no seu método de retorno de chamada.

Basta adicionar isso ao seu aplicativo.rb:

require "rack/contrib/jsonp"

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

Nada embutido em trilhos especificamente para o JSONP, mas há algumas coisas que você poderia fazer se quisesse que seu aplicativo Rails se tornasse bem com o JSONP.

  • Crie um MIME JSONP no Type em Config/Initializers/Mime_types.rb
  • Estenda o objeto com um método to_jsonp que envolverá chamadas para o JSON no seu retorno de chamada aprovado. algo como:

def to_jsonp (retorno de chamada, opções = {}) "#{retorno de chamada} (#{self.to_json (options)})" end

  • Siga este artigo de caras.

http://blogs.sitepoint.com/2006/10/05/json-p-output-with-rails/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top