"ajax:complete"不向希罗库开火



我正在使用featherlight来弹出一个由ajax调用我的Rails服务器生成的表单。表单使用 remote => true 提交数据,服务器使用 json 进行响应。在我的JavaScript中,我有

$(document).on('ajax:complete', handleAjaxComplete)

提交表单后,我关闭表单的羽毛灯框,然后用微调器打开一个新的,然后等待ajax:complete触发。

奇怪的是,在我的本地开发环境中,它会触发,我可以处理响应。在 heroku 上它没有(即使 json 以状态 200 发送并且看起来不错。

唯一的理论是,这是因为我关闭了羽毛灯盒,但它也不应该在我的本地机器上工作,对吗?为什么我会收到响应却没有调用handleAjaxComplete - 控制台中没有错误(实际上我什至收到"XHR 已完成加载:POST "日志)?

这里讨论这个问题 https://github.com/rails/jquery-ujs/issues/223

这归结为我的表格在灯箱中的事实。提交表单时,灯箱会淡出。在我的本地机器上,webrick 的响应速度足够快,以至于表单在淡出时仍然可以触发ajax:complete。然而,在 heroku 上,当$.ajax收到回复时,表单已从 DOM 中删除,因此没有任何反应。我本可以使用jquery自己的来解决这个问题:

$.ajaxComplete()

(或绑定到该事件)但我最终只是将窗体保持打开状态,并在窗体上方使用模式微调器,直到服务器做出响应。

最新更新