0

我有一个使用 Rails UJS 触发 ajax 请求的链接。响应实际上替换了包含链接的父元素。ajax:before 事件按预期触发,但 ajax:complete 事件永远不会触发。我认为这只是元素被替换的结果。但只是为了检查,我直接绑定到一个 ajax“完成”回调而不使用 UJS,它工作正常。

所以我的问题是为什么“完成”回调在直接绑定到 ajax 调用时起作用,但在通过 UJS 绑定到“ajax:完成”时不起作用?

4

2 回答 2

2

阅读这个 jquery-ujs 问题:

事件 ajax:complete 不会在表单替换后触发

于 2013-03-14T12:41:19.363 回答
-2

我之前发表评论时并没有考虑(道歉),但现在我想我足够清醒可以帮助你:)。

尽管 JQuery 支持 script() 函数,但您通常不会通过 Ajax 触发 UJS!使用带有 remote:true 的常规 form_tag(这将在您的表单中粘贴一个“数据远程”标签。Ajax 与 JSON 和 UJS 一起使用,您将返回纯 js

请记住,该操作通常会以 app/views/<controller>/<action>.js.erb 的名称呈现到表单(或您当前使用的任何模板技术)

请记住在您的控制器中有 respond_to 块,例如

respond_to do |format|
  format.js   #note.. not .json
end

还要确保您的请求标头接受 javascript.. 'application/javascript', 'script'

于 2013-03-07T20:56:01.480 回答