Jsonp com trilhos
-
19-09-2019 - |
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.
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/