2014-01-14 80 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