Jquery 带Rails的JSONP

Jquery 带Rails的JSONP,jquery,ruby-on-rails,json,prototypejs,jsonp,Jquery,Ruby On Rails,Json,Prototypejs,Jsonp,我正在尝试使用Rails/Prototype从远程站点检索JSON数据 我发现有一个函数具有Ajax.JSONRequest()函数。我不能让它工作 jQuery有一个$.getJSON()函数,但我使用的是一些原型函数,我不想切换到jQuery或使用无冲突模式 我错过了什么?使用Rails或Prototype似乎很容易做到这一点。您是否需要使用Rails帮助程序使客户端请求JSON?这很容易 您只需要确保/some_url使用JSON响应xhtprequest(最好使用respond_to?)

我正在尝试使用Rails/Prototype从远程站点检索JSON数据

我发现有一个函数具有
Ajax.JSONRequest()
函数。我不能让它工作

jQuery有一个
$.getJSON()
函数,但我使用的是一些原型函数,我不想切换到jQuery或使用无冲突模式


我错过了什么?使用Rails或Prototype似乎很容易做到这一点。

您是否需要使用Rails帮助程序使客户端请求JSON?这很容易


您只需要确保/some_url使用JSON响应xhtprequest(最好使用respond_to?),但您也可以使用Rails的Object#to_JSON方法检查request.xhr?。

Rails中没有专门针对jsonp的内置内容,但是如果您希望Rails应用程序能够很好地使用jsonp,您可以做一些事情

  • 在config/initializers/mime_types.rb中创建jsonp mime类型
  • 使用to_jsonp方法扩展对象,该方法将在传递的回调中封装对json的调用。比如:
def to_jsonp(回调,选项={}) “#{callback}(#{self.to_json(选项)})” 结束

  • 关注这篇文章

您还可以使用rack contrib中提供的JSONP rack middlware。这使您能够将&callback=method追加到查询字符串中,并将来自rails的响应包装到回调方法中

只需将其添加到您的应用程序中即可。rb:

require "rack/contrib/jsonp"

class Application < Rails::Application
  config.middleware.use Rack::JSONP
end
要求“机架/contrib/jsonp”
类应用程序
我有点困惑。你提到你想通过Rails获得json,但想使用JavaScript?您希望由谁提出请求?服务器还是客户机?我想问的是,是否有一个用于JSONP的Rails助手。客户端或服务器端。为了清晰起见,编辑了原始帖子。现在有一个宝石,rack jsonp,它以同样的方式工作;在Rails 3.x应用程序中,您不需要
require
,只需将
gem'rack jsonp'
添加到gem文件中,然后
捆绑安装即可。
require "rack/contrib/jsonp"

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