2

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

関数を持つPrototype のブランチがあることがわかりましたAjax.JSONRequest()。私はこれを機能させることができません。

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

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

4

3 に答える 3

3

また、rack-contrib で利用できる JSONP ラック ミドルウェアを使用することもできます。これにより、クエリ文字列に &callback=method を追加するだけで、レールからの応答をコールバック メソッドでラップすることができます。

これを application.rb に追加するだけです:

require "rack/contrib/jsonp"

class Application < Rails::Application
  config.middleware.use Rack::JSONP
end
于 2012-04-19T18:24:40.243 に答える
1

Rails には jsonp 用に特別に組み込まれたものは何もありませんが、Rails アプリを jsonp でうまく動作させたい場合にできることがいくつかあります。

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

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

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

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

于 2010-11-23T08:04:07.617 に答える
1

クライアントが JSON を要求するために Rails ヘルパーを使用する必要がありますか? プロトタイプで簡単

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? を確認することもできます)。

于 2009-11-10T19:56:51.780 に答える