"ajax:complete" 没有在 Heroku 上启动
"ajax:complete" not firing on Heroku
我正在使用 featherlight
弹出一个由 ajax 调用我的 Rails 服务器生成的表单。表单以 remote => true
提交数据,服务器以 [=27=] 响应。在我的 javascript 我有
$(document).on('ajax:complete', handleAjaxComplete)
提交表单后,我关闭表单的 featherlight 框并打开一个带有微调器的新框并等待 ajax:complete
触发。
奇怪的是,在我的本地开发环境中它触发了,我可以处理响应。在 heroku 上它没有(即使 json 以状态 200 发送通过并且看起来不错。
我唯一的猜测是,那是因为我关闭了 featherlight box,但它也不应该在我的本地机器上工作,对吗?为什么我会收到响应但没有调用 handleAjaxComplete
- 控制台中没有错误(事实上我什至收到 "XHR finished loading: POST <url>" 日志)?
问题在这里讨论https://github.com/rails/jquery-ujs/issues/223
归结为我的表单在灯箱中。当您提交表单时,灯箱会淡出。在我的本地机器上,webrick 响应速度足够快,表单在淡出时仍会触发 ajax:complete
。然而,在 heroku 上,当 $.ajax
收到回复时,表单已从 DOM 中删除,因此什么也没有发生。我可以通过使用 jquery 自己的方法解决这个问题:
$.ajaxComplete()
(或绑定到那个事件)但我最终只是让表单打开,上面有一个模式微调器,直到服务器有响应。
我正在使用 featherlight
弹出一个由 ajax 调用我的 Rails 服务器生成的表单。表单以 remote => true
提交数据,服务器以 [=27=] 响应。在我的 javascript 我有
$(document).on('ajax:complete', handleAjaxComplete)
提交表单后,我关闭表单的 featherlight 框并打开一个带有微调器的新框并等待 ajax:complete
触发。
奇怪的是,在我的本地开发环境中它触发了,我可以处理响应。在 heroku 上它没有(即使 json 以状态 200 发送通过并且看起来不错。
我唯一的猜测是,那是因为我关闭了 featherlight box,但它也不应该在我的本地机器上工作,对吗?为什么我会收到响应但没有调用 handleAjaxComplete
- 控制台中没有错误(事实上我什至收到 "XHR finished loading: POST <url>" 日志)?
问题在这里讨论https://github.com/rails/jquery-ujs/issues/223
归结为我的表单在灯箱中。当您提交表单时,灯箱会淡出。在我的本地机器上,webrick 响应速度足够快,表单在淡出时仍会触发 ajax:complete
。然而,在 heroku 上,当 $.ajax
收到回复时,表单已从 DOM 中删除,因此什么也没有发生。我可以通过使用 jquery 自己的方法解决这个问题:
$.ajaxComplete()
(或绑定到那个事件)但我最终只是让表单打开,上面有一个模式微调器,直到服务器有响应。