我一直在寻找不同的资源来解决这个问题,但我似乎无法弄清楚问题可能是什么。
我正在尝试使用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.js
和jquery.js
脚本正在处理数据返回。
我找到了不同的信息并尝试了所有这些信息但没有成功。这应该是相当微不足道的,但我无法弄清楚。
答案 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
中的所有内容