2014-01-14 1 views
0

ajax를 사용하여 부분 업데이트를하고 있지만 동시에 서버에서 일부 데이터를 다시 가져 오려고합니다.Ajax 부분 렌더링에 데이터 응답을 피기 백 할 수 있습니까

$('<%=escape_javascript @my_params.to_json%>'); 
$("#partial").html('<%= escape_javascript(render partial: "view/partial")%>'); 

은 데이터와 부분 렌더링에 대한 응답을 제공하지만 Ajax 렌더링을 중단하므로 부분은 렌더링되지 않습니다.

레일 4, ROR을 사용합니다. 브라우저 또는 Rails에 오류가 없습니다.

페이지를 새로 고침하면 원하는 결과를 얻습니다.

나는 이것이 내가 만드는 것보다 쉽다는 것을 알고있다.

답변

0

나는 교화를 위해 여기를 떠날거야,하지만 내 친구는 내가 학대 경우 그들이 나를 부인 것이라고 나에게 말했다 이런 식으로 쿠키. 그래서 구현을 바꿨으므로 친구를 잃을 여유가 없습니다. 그들은 아약스 콜을위한 시간을 빨리 돌리는 데 집중하라고했습니다. 나는 객체가 렌더링을 완료했을 때 여전히 알고 있어야하므로 부분적으로 숨겨진 요소를 추가하고 크기를 0으로 설정하고 부분 렌더링이 높이에서 0으로 변경 될 때까지 기다려야합니다. 세션 ID를 사용하여 크로스 토크를 피하려는 경우에도 웹 페이지에 열린 두 개의 탭과의 상호 작용을 보는 것은 매우 재미있었습니다.

좋아요, 제 목적을 위해 최선의 방법은 데이터를 쿠키에 넣고 쿠키가 변경된 시점을 감지하는 것입니다. 이를 통해 send_data 명령의 끝에서 쿠키를 변경할 수 있었고 다른 이미지와 관련된 이미지 위치에 대한 데이터를 얻었을뿐만 아니라 send_data가 완료되면 감지하여 이미지를 움직일 수있는 대기 이미지 (애니메이션 대기 이미지).

가 서버

send_data(image.to_blob { self.format = 'png' }, 
      type: 'image/png', 
      disposition: 'inline') 
cookies[:duck_data] = { :value => $cookie_data.to_json} 

에 다음과 같습니다과이

wait_for_paint=-> 
    if $.cookie('duck_data') == 'keep waiting' 
    setTimeout (->wait_for_paint()), 250 
    else 
    my_data= $.parseJSON($.cookie('duck_data')) 
    do_ajax_response(my_data) 
0

ajax 페이지 렌더링에 js.erb 형식을 사용한다고 가정합니다. 부분 뷰 내부 , 가 여기 JS 코드를 실행

코드를 작성하거나 할당 글로벌 JS 변수
+0

좋아 클라이언트 측에서, 난 ("#의 magic_box"). html로 (' $ 시도 <% = escape_javascript (부분 렌더링 : "magicacts/magic_box") %> '); areply = <% = 이스케이프 _ 자바 스크립트 (@ my_params.to_json) %>; – bobbdelsol

+0

무언가를 더 간단하게하기 위해 내가 추가했습니다. = 3; 나는 성공적인 응답을 얻었고 응답의 데이터를 보았지만 그것을 참조 할 수 없었습니다. – bobbdelsol