2014-06-09 4 views
1

RoR에 대한 경험이 있지만 AJAX 문제의 초보자입니다. 내 목표는 HTML5 + JavaScript 클라이언트와 Ruby on Rails 서버를 다른 컴퓨터에서 실행하는 것입니다 (결국).AJAX를 사용하여 Ruby on Rails 서버에서 JSON 컨텐츠 가져 오기

자바 스크립트 클라이언트가 JSON 형식의 서버에서 내용을 가져 와서 나중에 구문 분석하려고합니다. 나는 이미 "responseType"등을 추가하는 것과 같이 여러 가지를 시도했지만 그 중 일부는 효과가 없었다.

나의 현재 자바 스크립트 파일은 다음과 같다 :

$(document).ready(function() { 
     var xmlhttp = new XMLHttpRequest(); 
     xmlhttp.open("GET", "http://localhost:3000/contents", true); 
     xmlhttp.send(); 

     alert(xmlhttp.responseText); 
}); 

그리고 내의 RoR 애플 리케이션 contents_controller.rb의 인덱스 함수를 호출하는 경로 "/ 내용"가, 즉 다음과 같이이다 :

def index 
    @contents = Content.all.order('created_at DESC') 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @contents } 
    end 
end 

AJAX도 올바른 방법입니까? 나는 조금 잃었다.

고맙습니다.

+0

당신이 jQuery를 때 왜 바닐라 JS 방법을 사용하고 있습니까? [$ .ajax] (http://api.jquery.com/jquery.ajax/)를보십시오. 아약스가이 일을하는 올바른 방법인지 아닌지는 내가 생각하기로 결정하는 것입니다. –

답변

3

jQuery를 사용하면 다음과 같이 할 수 있습니다.

$.ajax({ 
    url: '/contents', 
    type: 'GET', 
    dataType: 'json', 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content')); 
    }, 
    success: function(data){/* do something meaningful with data */}, 
    error: function(xhr, status, response) {/* your error callback */} 
}); 

귀하의 format.json이 귀하의 응답을 처리해야합니다.

+0

그것은 일했다! 그냥 '.json'을 추가하기 위해 'url'을 변경했는데 모두 괜찮 았습니다. 고마워요! –

1

간단히 /contents.json을 호출 할 수 있습니다 (모든 URL에 .json을 추가하여 출력 fron json 템플릿을 얻습니다) 또는 html보기가 필요하지 않은 경우 기본 형식을 json으로 설정하십시오. 이를 위해 ...

routes.rb 파일을 수정하여 기본 형식을 지정할 수 있습니다.

routes.rb

resources :contents, defaults: {format: :json} 
+0

json 템플릿을 얻으려면 .json에 대해 알지 못했습니다. 감사! 하지만 위의 JavaScript 코드에 ".json"을 추가하려고했지만 아직 빈 대답을 얻었습니다 ... –

+0

json 출력용 템플릿이 있어야합니다. index.html.erb가 html로 렌더링되는 것과 마찬가지로 index.json.jbuilder도 json 요청을 위해 렌더링됩니다. 스캐 폴드 중 하나에서 json 템플릿을 볼 수 있습니다 (또는 스캐 폴드를 생성하고 /my_scffold_name.json 작동 참조). – Neeraj

+0

Jbuilder는 다른 DSL 언어입니다 – Neeraj

관련 문제