2014-01-14 32 views
0

我使用ajax來更新局部,但我想從服務器同時獲取一些數據。你可以搭載數據響應到Ajax局部渲染

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

給我的數據和部分渲染的響應,但它打破了Ajax渲染,所以部分不渲染。

使用Rails 4,ROR。在瀏覽器或Rails沒有錯誤

如果我刷新頁面,我得到我想要的結果。

我知道這一定比我做的更容易。

回答

0

我會在這裏把這個留給薰陶,但我的朋友告訴我,他們會否認我,如果我濫用這樣一個cookie。所以我改變了我的執行方式,不能失去任何朋友。他們告訴我要專注於快速轉向ajax呼叫。我仍然需要知道對象何時完成了渲染,因此我只是在部分中添加了隱藏元素,並將其大小設置爲零,並等待直到部分渲染將高度從零更改爲止。雖然我打算使用會話ID避免串擾,但看到與網頁打開的兩個選項卡的交互很有趣。

好吧,我決定,爲了我的目的,最好的方法是將數據放入cookie中,並檢測cookie何時更改。這使我可以在send_data命令結尾處更改cookie,並獲取圖像位置相對於其他圖像的數據,以及檢測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

假設您使用js.erb格式來渲染ajax頁面。 視圖部分裏面,寫

這裏運行的js代碼的代碼或分配給全局變量的js
+0

好吧,我試圖 $( 「#magic_box」)HTML('<%= escape_javascript (渲染部分:「magicacts/magic_box」)%>'); areply = <%= escape_javascript(@ my_params.to_json)%>; – bobbdelsol

+0

做些簡單的事情,我加了areply = 3;我得到了一個成功的迴應,並在響應中查看數據,但無法引用它。 – bobbdelsol