来自form_for的响应未执行

时间:2011-05-16 06:58:28

标签: jquery ajax ruby-on-rails-3

我一直在寻找不同的资源来解决这个问题,但我似乎无法弄清楚问题可能是什么。

我正在尝试使用jquery进行ajax表单处理。

我的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| %> 这触发了我的控制器的创建处理程序,因为这是一个ajax调用,我有适当的create.js.erb,其中包含一个jquery,如$("#data_table").html("something")

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

我已尝试调试不同的脚本,但我无法获得任何有意义的内容,但我可以看到我的rails.jquery.jsjquery.js脚本正在处理数据返回。

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

2 个答案:

答案 0 :(得分:1)

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

我已经在表单上添加了一个绑定,以便在ajax:complete事件上执行。 所以我的页面现在包含以下javascript:

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

所以现在当ajax调用完成时,它将评估xhr.responseText。

答案 1 :(得分:0)

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

对我而言,关键是通过添加

来禁用布局
layout false

进入控制器。如果没有这个,ajax响应也包含了我在/ views / layouts / application

中的所有内容