代码之家  ›  专栏  ›  技术社区  ›  mculp

带轨道的JSONP

  •  1
  • mculp  · 技术社区  · 15 年前

    我正在尝试使用rails/prototype从远程站点检索JSON数据。

    我发现 a branch of Prototype 那有一个 Ajax.JSONRequest() 功能。我不能让这个工作。

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

    我错过了什么?这似乎很容易用Rails或原型完成。

    3 回复  |  直到 13 年前
        1
  •  1
  •   pantulis    15 年前

    您需要使用Rails帮助器来让客户机请求JSON吗?这很容易 Prototype

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

    您只需要确保/some-url使用json响应xhtprequest(最好使用response-to?,但您也可以检查request.xhr?),使用rails的object-to-json方法。

        2
  •  3
  •   Macdiesel    13 年前

    您还可以使用Rack Contrib中提供的JSONP Rack Middlware。这使您能够将&callback=方法追加到查询字符串中,并将Rails的响应包装在回调方法中。

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

    require "rack/contrib/jsonp"
    
    class Application < Rails::Application
      config.middleware.use Rack::JSONP
    end
    
        3
  •  1
  •   hubert    14 年前

    没有为JSONP专门构建在Rails中的东西,但是如果您希望Rails应用程序能够很好地使用JSONP,那么您可以做一些事情。

    • 在config/initials/mime-types.rb中创建jsonp-mime类型
    • 用一个to-jsonp方法扩展对象,该方法将在传递的回调中包装对json的调用。类似:

    def to_jsonp(回调,选项=) “回拨(self.to_json(选项))”“ 结束

    • 关注这篇文章。

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