我想從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