在使用@rails/ujs (不使用jquery)的Rails 6.1应用程序中,我试图在激发和完成ajax请求时拦截它们。
我已将以下内容添加到我的application.js中
document.addEventListener("turbolinks:load", () => {
document.addEventListener("ajax:send", () => {
console.log('SEND')
})
document.addEventListener("ajax:complete", () => {
console.log('COMPLETE')
})
})当我解雇它们时,我正确地得到了SEND,但是当它们结束时,我没有得到(预期的) COMPLETE。
我是不是漏掉了什么?
发布于 2021-12-24 12:06:12
我有一些个人的想法来调查这种错误。
提示:发送在控制台中打印时工作正常(确保控制台中没有错误消息)
想法:打开“网络”选项卡,检查请求是否挂起。

因为无论服务器响应的结果如何,ajax:complete都会触发,所以我们可以使用它找到下一步。
situationA:请求正在挂起。
nextStep:试着找出为什么请求停留在服务器端。
situationB:请求响应,但事件仍未触发
nextStep:尝试查找是否有任何脚本已经在侦听rails-ujs事件。
打电话给event.preventDefault()里面。您还可以打开Source选项卡并选中复选框,在某些特定的XHR相关事件中添加断点:

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#events
并尝试找出是否有错误,或调用event.preventDefault()
我测试了您的代码,它在我的机器上运行得很好,所以我只想给您一些想法以供参考。
https://stackoverflow.com/questions/69582654
复制相似问题