我正在尝试使用 Rails/Prototype 从远程站点检索 JSON 数据。
我发现Prototype 有一个分支,它有一个Ajax.JSONRequest()
功能。我不能让它工作。
jQuery 有一个$.getJSON()
函数,但我正在使用一些 Prototype 函数,我宁愿不切换到 jQuery 或使用无冲突模式。
我错过了什么?这似乎可以通过 Rails 或 Prototype 轻松完成。
我正在尝试使用 Rails/Prototype 从远程站点检索 JSON 数据。
我发现Prototype 有一个分支,它有一个Ajax.JSONRequest()
功能。我不能让它工作。
jQuery 有一个$.getJSON()
函数,但我正在使用一些 Prototype 函数,我宁愿不切换到 jQuery 或使用无冲突模式。
我错过了什么?这似乎可以通过 Rails 或 Prototype 轻松完成。
您还可以使用 rack-contrib 中提供的 JSONP rack middlware。这使您能够将 &callback=method 附加到您的查询字符串,并将来自 rails 的响应包装在您的回调方法中。
只需将其添加到您的 application.rb 中:
require "rack/contrib/jsonp"
class Application < Rails::Application
config.middleware.use Rack::JSONP
end
您是否需要使用 Rails 助手来制作客户端请求 JSON?使用原型很容易
new Ajax.Request('/some_url', {
method: 'get',
onSuccess: function(transport) {
var json = transport.responseText.evalJSON();
}
});
您只需要使用 Rails 的 Object#to_json 方法确保 /some_url 使用 JSON 响应 XHTTPRequest(最好使用 respond_to?,但您也可以检查 request.xhr?)。
Rails 中没有专门针对 jsonp 内置,但如果您希望您的 rails 应用程序与 jsonp 配合使用,您可以做一些事情。
def to_jsonp(callback, options={}) "#{callback}(#{self.to_json(options)})" 结束
http://blogs.sitepoint.com/2006/10/05/json-p-output-with-rails/