2011-05-16 29 views
0

我一直在搜寻不同的资源来解决这个问题,但我似乎无法弄清楚问题可能是什么。来自form_for remote的响应不被执行

我想要做一个jQuery表单处理与jQuery。

我application.html.erb包含以下行

<%= javascript_include_tag "http://code.jquery.com/jquery-1.6.1.js"%> 
    <%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js" %> 
    <%= javascript_include_tag "jquery.rails.js" %> 

jquery.rails.js包含从https://github.com/rails/jquery-ujs`

最新我有典型的form_for电话:<%=form_for @data, :remote => true do |f| %> 从而启动创建我的控制器的处理器,因为这是一个阿贾克斯呼吁,我有适当的create.js.erb其中包含jquery这样的$("#data_table").html("something")

整个过程几乎是正确的:ajax调用是正确的,当我查看浏览器开发工具时,我发现它返回了包含$("#data_table").html("something")的正确XHR资源,但它返回的内容未被浏览器评估。

我试着调试过不同的脚本,但是我找不到任何有意义的东西,但是我可以看到数据返回正在由我的rails.jquery.jsjquery.js脚本处理。

我发现不同的信息,并尝试所有这些都没有成功。这应该是相当微不足道的,但我无法弄清楚。

回答

1

我得到它的工作,但我很难想象这是做这件事的正确方法,但经过数小时的试验和错误(甚至阅读jquery.js代码),这是唯一一个结束了工作。我仍然希望得到更好的答案。

我已经添加了一个绑定到表单以执行ajax:complete事件。 所以我的页面包含下面的JavaScript现在:Ajax调用完成

$(document).ready(
    function(){ 
     $('#form_id').bind('ajax:complete',function(evt,xhr,status){ 
      eval(xhr.responseText); 
     }); 
) 

所以,现在时,将评估xhr.responseText。

+0

从jQuery 1.8开始,只应将.ajaxComlpete()方法附加到文档。 – Ziggy 2014-01-14 15:04:21

0

此问题的答案可能是在这里 Rails 3 ajax response is not executed

关键对我来说是通过增加

layout false 

到控制器禁用布局。如果没有这个Ajax响应也包含我在/ views/layouts/application中的所有内容