【问题标题】:Rails UJS ajax:complete not firingRails UJS ajax:完成不触发
【发布时间】:2013-03-07 18:28:29
【问题描述】:

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

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

【问题讨论】:

  • 检查您的服务器日志,并注意“处理请求为”这一行,这应该会给您一个很大的线索。或者,通过调试器检查 chrome 中的请求标头并查看“accepts”.. 应该是 application/javascript.. 确保您正在做 respond_to do |formt| format.js .... 不是 format.json
  • 我检查了一下,一切都在显示 js。它处理渲染的 js 就好了,但是 ajax:complete 不会触发。
  • 嗨@TomRossi 我有同样的问题请问解决方案是什么?

标签: ruby-on-rails jquery ujs


【解决方案1】:

【讨论】:

  • 就是这样!你明白他们在说什么吗?
【解决方案2】:

我之前发表评论时没想到(道歉),但现在我想我已经足够清醒了,可以帮助你:)。

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

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

记得在你的控制器中设置 respond_to 块,例如

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

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

【讨论】:

  • 也许我没有解释自己。我没有使用表格。我有一个使用 :remote => true 的简单 link_to。或者,我直接使用 $.ajax 并且效果很好。
猜你喜欢
  • 1970-01-01
  • 2011-09-13
  • 2018-04-16
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
  • 2023-04-08
相关资源
最近更新 更多