我想从Rails/Prototype从远程站点检索JSON数据。JSONP与Rails
我发现有a branch of Prototype有Ajax.JSONRequest()
函数。我无法得到这个工作。
jQuery有$.getJSON()
函数,但我使用了一些Prototype函数,我宁愿不切换到jQuery或不使用冲突模式。
我错过了什么?这看起来很容易用Rails或Prototype完成。
我想从Rails/Prototype从远程站点检索JSON数据。JSONP与Rails
我发现有a branch of Prototype有Ajax.JSONRequest()
函数。我无法得到这个工作。
jQuery有$.getJSON()
函数,但我使用了一些Prototype函数,我宁愿不切换到jQuery或不使用冲突模式。
我错过了什么?这看起来很容易用Rails或Prototype完成。
您是否需要使用Rails助手来使客户端请求JSON?这很容易与Prototype
new Ajax.Request('/some_url', { method:'get', onSuccess: function(transport){ var json = transport.responseText.evalJSON(); } });
你只需要确保/ SOME_URL使用JSON到XHTTPRequest响应(最好使用的respond_to?,但你也可以检查request.xhr?),使用Rails的对象# to_json方法。
这不适用于远程站点。 – mculp 2009-11-11 17:11:54
没有内置于专门针对jsonp的rails中,但如果您希望您的rails应用程序能够与jsonp一起使用,那么您可以执行一些操作。
高清to_jsonp(回调,选择= {}) “#{}回调(#{self.to_json(选项)})” 结束
http://blogs.sitepoint.com/2006/10/05/json-p-output-with-rails/
您还可以使用JSONP架middlware在机架的contrib的可用。这使您能够将& callback =方法附加到您的查询字符串中,并使用包装在回调方法中的rails的响应。
只需添加到您的application.rb中:
require "rack/contrib/jsonp"
class Application < Rails::Application
config.middleware.use Rack::JSONP
end
现在有一个gem,rack-jsonp,它的工作原理是一样的。在Rails 3.x应用程序中,您不需要'require',只需将'gem'rack-jsonp''添加到您的Gemfile和'bundle install'。 – cfeduke 2012-09-11 02:19:06
我有点困惑。你提到你想让Rails获得json,但是想使用JavaScript?您想要提出请求的人 - 服务器还是客户端? – 2009-11-10 19:01:54
我在问是否有JSONP的Rails助手。客户端或服务器端。为了清晰起见,编辑原始帖子。 – mculp 2009-11-10 19:07:13