문제

레일/프로토 타입으로 원격 사이트에서 JSON 데이터를 검색하려고합니다.

나는 거기에 있다는 것을 알았습니다 프로토 타입의 분기 그것은 있습니다 Ajax.JSONRequest() 기능. 나는 이것을 작동시킬 수 없다.

jQuery에는 a $.getJSON() 기능이지만 일부 프로토 타입 기능을 사용하고 있으며 jQuery로 전환하거나 충돌 모드를 사용하지 않기를 바랍니다.

내가 무엇을 놓치고 있습니까? 이것은 레일이나 프로토 타입으로 쉽게 이루어질 것 같습니다.

도움이 되었습니까?

해결책

클라이언트가 JSON을 요청하기 위해 Rails 도우미를 사용해야합니까? 쉽습니다 원기

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

/some_url이 xhttprequest (바람직하게는 rains#to_json method를 사용하여 reapple_to?를 사용하지만 request.xhr?)에 JSON과 함께 응답해야합니다.

다른 팁

Rack-Contrib에서 사용할 수있는 JSONP Rack Middlware를 사용할 수도 있습니다. 이렇게하면 쿼리 문자열에만 콜백 = 메소드를 추가 할 수 있으며 콜백 메소드에 레일의 응답을받을 수 있습니다.

application.rb에 이것을 추가하십시오.

require "rack/contrib/jsonp"

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

JSONP를 위해 특별히 레일에 내장 된 것은 없지만, Rails 앱이 JSONP와 잘 놀기를 원한다면 몇 가지 할 수있는 일이 있습니다.

  • 구성/이니셜 라이저/mime_types.rb에서 jsonp mime-type 만들기
  • 통과 된 콜백에서 JSON으로 호출을 감싸는 TO_JSONP 메소드로 객체를 확장하십시오. 같은 것 :

def to_jsonp (콜백, 옵션 = {}) "#{콜백} (#{self.to_json (옵션)})"END

  • 이 녀석 기사를 따르십시오.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top