2012-05-12 1 views
2

XHR을 많이 사용하는 프로젝트에서 작업 중이며 서버 측에서 제대로 추적 할 수 있도록 각 Ajax 요청에 추가해야하는 데이터가 있습니다. 브라우저에서 무슨 일이 일어나고 있는지.ajaxSetup이 Rails/jquery-ujs와 작동하지 않습니다.

ajax 요청을하는 모든 양식, 링크 등에 추가 된 모든 Ajax 요청에 대한 콜백을 처리하는 데 사용하는 xhr_response_handler라는 일반 클래스가 있습니다. (즉, 여기서 ": 원격 => true"로 레일)

$('.xhr_response_handler') 
    .on('ajax:success', function(event, data, status, xhr) { xhr_success(data); }) 
    .on('ajax:failure', function(xhr, status, error) { xhr_fail(error); }); 

가 그럼 난 사용하여 각 요청과 함께 전송되는 기본 데이터를 추가하려고 : 이것은 요소의 일부 작동

$.ajaxSetup({ 
    data: { 
     Foo: <%= @Bar %> 
    } 
}); 

을 어디에 아약스 설정은 jquery로 직접 구성되지만, link_to 및 form_for와 같은 레일스 메소드를 사용하여 만든 일부 요소에는 remote => true와 함께 작동하지 않습니다.

이상한 것은 나 또한 레일에 데이터를 추가하기위한 작업 그 다음

$('.xhr_response_handler').data('params', { Foo2: <%= @Bar2 %> }); 

을 추가하는 경우 LINK_TO를 사용하여 아약스 요청을 생성한다는 것입니다. 이상하게 만드는 것은 갑자기 ajaxSettings가 작동하고, 아약스 요청에서 Foo와 Foo2를 매개 변수로 사용한다는 것입니다. 하지만 ajaxSettings를 단독으로 사용하면 매개 변수가 전혀 없습니다.

추가 할 데이터는 양식의 form_for 메소드에서 생성 된 ajax 요청에서 전송 된 양식 데이터로 직렬화되지 않습니다.

도움을 주시면 감사하겠습니다.

레일 3.2.3

루비 1.9.3p194

jQuery를 1.7.2

+0

이 문제에 대한 해결책을 찾았습니까? –

답변

0

나는이 문제가 $.ajaxSetup의 데이터 해시가 아약스에 의해 무시되기 때문에 나타납니다 당신이 나중에 할 호출 생각합니다. 데이터는 수동으로 병합해야합니다.