我正在使用featherlight
弹出ajax调用生成的表单到我的Rails服务器。表单使用remote => true
提交数据,服务器使用json进行响应。在我的javascript中我有
$(document).on('ajax:complete', handleAjaxComplete)
当表单提交时,我关闭表单的featherlight框并用一个微调器打开一个新的,然后等到ajax:complete
触发。
奇怪的是,在我的本地开发环境中,它会触发,我可以处理响应。在heroku上它没有(即使json通过状态200发送并且看起来很好。
我唯一的理论是,因为我正在关闭羽毛灯盒但是它不应该在我的本地机器上工作吗?为什么我会收到一个响应,但没有调用handleAjaxComplete
- 控制台中没有错误(实际上我甚至得到了“XHR已完成加载:POST< url>”日志)?
答案 0 :(得分:1)
这里讨论的问题是https://github.com/rails/jquery-ujs/issues/223
归结为我的表格在灯箱中。提交表单时,灯箱会淡出。在我的本地机器上,webrick响应速度足够快,表格在淡出时仍会触发ajax:complete
。但是,在heroku上,在$.ajax
收到响应时,表单已从DOM中删除,因此没有任何反应。我可以通过使用jquery自己来解决这个问题:
$.ajaxComplete()
(或者绑定到那个事件)但是我最后只是打开表单,上面有一个模态微调器,直到服务器收到响应。