首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@rails-ujs如何拦截ajax:完成

@rails-ujs如何拦截ajax:完成
EN

Stack Overflow用户
提问于 2021-10-15 09:31:58
回答 1查看 199关注 0票数 4

在使用@rails/ujs (不使用jquery)的Rails 6.1应用程序中,我试图在激发和完成ajax请求时拦截它们。

我已将以下内容添加到我的application.js

代码语言:javascript
复制
document.addEventListener("turbolinks:load", () => {
  document.addEventListener("ajax:send", () => {
    console.log('SEND')
  })
  document.addEventListener("ajax:complete", () => {
    console.log('COMPLETE')
  })
})

当我解雇它们时,我正确地得到了SEND,但是当它们结束时,我没有得到(预期的) COMPLETE

我是不是漏掉了什么?

EN

回答 1

Stack Overflow用户

发布于 2021-12-24 12:06:12

我有一些个人的想法来调查这种错误。

提示:发送在控制台中打印时工作正常(确保控制台中没有错误消息)

想法:打开“网络”选项卡,检查请求是否挂起。

因为无论服务器响应的结果如何,ajax:complete都会触发,所以我们可以使用它找到下一步。

situationA:请求正在挂起。

nextStep:试着找出为什么请求停留在服务器端。

situationB:请求响应,但事件仍未触发

nextStep:尝试查找是否有任何脚本已经在侦听rails-ujs事件。

  • ajax:success
  • ajax:error
  • ajax:complete

打电话给event.preventDefault()里面。您还可以打开Source选项卡并选中复选框,在某些特定的XHR相关事件中添加断点:

  • error
  • load
  • loadend

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#events

并尝试找出是否有错误,或调用event.preventDefault()

我测试了您的代码,它在我的机器上运行得很好,所以我只想给您一些想法以供参考。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69582654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档