Ajax响应未执行(javascript)

时间:2013-10-04 21:00:36

标签: javascript ruby-on-rails ajax

我有一个远程表单,并提交search操作。在content#search内,我有以下内容:

respond_to do |format|
  #format.html {}
  format.js {}
end

我有一个search.js.erb文件,其中包含以下内容:

$('#ajaxstuffhere').html("<%= escape_javascript(render :partial => 'search') %>");

不幸的是,这根本不会修改主页面中的div

当我取消评论format.html {}时,它会使用div内容更新search.html.erb。不幸的是,这会使用控制器的默认布局进行渲染。

我想要的是在没有布局的情况下渲染此内容。 理想使用javascript,因此我可以在此过程中更新一些Google地图标记。

此表单代码:

<%= form_tag({:action => 'search'},:id => 'searchForm', :remote => true) do %>

生成此输出:

<form accept-charset="UTF-8" action="/search" data-remote="true" id="searchForm" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"></div>

任何人都可以告诉我缺少什么吗?

编辑:我在想...如果部分以HTML格式返回,我会点击javascript来捕捉响应,所以我可以在那里更新谷歌地图。无论哪种方式都是好的,只要布局消失(我仍然更喜欢js.erb方式)。

javascript响应的服务器日志说明如下:

 Rendered content/_search.html.erb (270.5ms)
 Rendered content/search.js.erb within layouts/content (274.1ms)

但该页面根本没有更新。它似乎是在点击javascript而且部分似乎被称为

1 个答案:

答案 0 :(得分:3)

确保页面上存在id为ajaxstuffhere的元素。将要呈现的HTML放在_search.html.erb中。然后渲染没有布局:

format.js { render layout: false }

尝试使用chrome开发人员工具调试任何问题。使用网络选项卡查看实际响应,控制台将标记任何js错误。

另一种方法是将html partial作为Ajax响应呈现并绑定到搜索表单的Ajax成功操作。