質問

Rails/Prototypeを使用してリモートサイトからJSONデータを取得しようとしています。

あることを発見しました プロトタイプのブランチ それは Ajax.JSONRequest() 関数。これではうまくいきません。

jQueryには $.getJSON() 関数を使用していますが、いくつかのプロトタイプ関数を使用しているため、jQuery に切り替えたり、競合モードを使用したりしたくありません。

私には何が欠けているのでしょうか?これはRailsかPrototypeを使えば簡単にできそうです。

役に立ちましたか?

解決

あなたは、クライアントの要求JSONを作るためにRailsのヘルパーを使用する必要がありますか?これはプロトタイプ

と簡単です

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

あなたはRailsのオブジェクト#のto_jsonをメソッドを使用して、/ some_urlがXHTTPRequestにJSON(好ましくはrespond_toを使用して?しかし、あなたはまた、request.xhrを確認することができますか?)で応答していることを確認する必要があります。

他のヒント

また、ラックのcontribに利用できるJSONPラックmiddlwareを使用することができます。これは、あなただけの追加&コールバッククエリ文字列に=の方法をして、コールバックメソッドに包まれたレールからの応答を持ってできるようになります。

ちょうどあなたのapplication.rbにこれを追加します:

require "rack/contrib/jsonp"

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

jsonp 専用に Rails に組み込まれたものは何もありませんが、Rails アプリを jsonp と適切に連携させたい場合にできることがいくつかあります。

  • config/initializers/mime_types.rb に jsonp MIME タイプを作成します。
  • to_jsonp メソッドを使用してオブジェクトを拡張し、渡されたコールバックで json への呼び出しをラップします。何かのようなもの:

def to_jsonp(callback、options = {}) "#{callback}(#{self.to_json(options)})" end "

  • この人の記事に従ってください。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top