【发布时间】:2013-06-03 20:37:46
【问题描述】:
当我提交远程表单时,我的控制器会以 HTML 格式返回一个无布局的索引视图。我希望在我的 HTML 中加载该索引视图时可以触发客户端回调。我试过这样的事情:
$("form").bind('ajax:complete', function(xhr, status) { theCallback() });
但这不起作用。也不绑定ajax:success。在jquery_ujs.js 中进行调试使我相信问题是由于回调事件绑定到的表单在 HTML 响应中不存在这一事实引起的。所以被触发的元素就消失了。
对我来说,这似乎不是一个奇特的场景,所以我猜一定有一个非常简单的解决方案。特别是,我希望这可以通过 HTML 响应类型来完成。我确定可以用 JS 响应类型来完成...
【问题讨论】:
-
见this answer。绑定到
ajax:success应该可以工作。你能检查 AJAX 调用的响应吗(即使用 firebug) -
响应是普通的部分 HMTL。在
jquery_ujs.js中,我看到在返回HMTL 后执行complete回调,它执行以下语句:element.trigger('ajax:complete', [xhr, status]);。但是,element指的是新 HTML 中不再存在的$("form"),因此我的回调永远不会执行。为了继续前进,我决定使用 JS 响应类型,并在响应中明确执行回调功能。但我仍然非常渴望找到 HTML 响应的解决方案。
标签: ruby-on-rails jquery