JSONP с Rails - PullRequest
       14

JSONP с Rails

1 голос
/ 10 ноября 2009

Я пытаюсь получить данные JSON с удаленного сайта с помощью Rails / Prototype.

Я обнаружил, что есть ветвь Прототипа , которая имеет функцию Ajax.JSONRequest(). Я не могу заставить это работать.

jQuery имеет функцию $.getJSON(), но я использую некоторые функции прототипа, и я бы предпочел не переключаться на jQuery или не использовать режим конфликта.

Чего мне не хватает? Кажется, что это было бы легко сделать с помощью Rails или Prototype.

Ответы [ 3 ]

3 голосов
/ 19 апреля 2012

Вы также можете использовать промежуточное программное обеспечение для стойки JSONP, которое доступно в rack-contrib. Это дает вам возможность просто добавить & callback = метод к вашей строке запроса и обернуть ответ от rails в ваш метод обратного вызова.

Просто добавьте это в ваше application.rb:

require "rack/contrib/jsonp"

class Application < Rails::Application
  config.middleware.use Rack::JSONP
end
1 голос
/ 23 ноября 2010

ничего не встроено в рельсы специально для jsonp, но есть пара вещей, которые вы могли бы сделать, если бы хотели, чтобы ваше приложение rails хорошо играло с jsonp.

  • создать JIMP-тип MIME в config / initializers / mime_types.rb
  • расширить объект с помощью метода to_jsonp, который обернет вызовы json в ваш переданный обратный вызов. что-то вроде:

def to_jsonp (обратный вызов, параметры = {}) "# {} Обратного вызова (# {self.to_json (опции)})" конец

  • следуйте этой статье, ребята.

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

1 голос
/ 10 ноября 2009

Вам нужно использовать помощники Rails, чтобы сделать запрос клиента JSON? Это просто с Прототипом

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

Вам просто нужно убедиться, что / some_url отвечает JSON на XHTTPRequest (желательно с использованием response_to ?, но вы также можете проверить request.xhr?), Используя метод Rails Object # to_json.

...