Ruby on rails RubyonRails jquery.js和application.js都会根据ajax按钮发出请求
当我点击以下按钮(以及页面上的所有其他ajax表单)时,Firefox发出了两个请求: 当我点击我的按钮时,我如何解决这个问题,只触发一个请求 我记得有一件事可能有助于诊断此问题。我知道它们都是javascript资产,我还模糊地记得在我开始构建我的应用程序后立即用我的资产修改了一些东西,因为Ruby on rails RubyonRails jquery.js和application.js都会根据ajax按钮发出请求,ruby-on-rails,ruby,jquery,Ruby On Rails,Ruby,Jquery,当我点击以下按钮(以及页面上的所有其他ajax表单)时,Firefox发出了两个请求: 当我点击我的按钮时,我如何解决这个问题,只触发一个请求 我记得有一件事可能有助于诊断此问题。我知道它们都是javascript资产,我还模糊地记得在我开始构建我的应用程序后立即用我的资产修改了一些东西,因为rails server冲我咆哮,告诉我要预编译(至少我认为是预编译)我的资产。我不记得我做了什么,所以不知道如何扭转它 我还从某个地方读到,firefox的缓存可能会导致它触发两个请求,所以我尝试清除缓存
rails server
冲我咆哮,告诉我要预编译(至少我认为是预编译)我的资产。我不记得我做了什么,所以不知道如何扭转它
我还从某个地方读到,firefox的缓存可能会导致它触发两个请求,所以我尝试清除缓存,但没有效果
感谢将问题解释得比评论更清楚一些:
jquery-ujs
javascript库添加事件绑定,以将通常会生成标准HTTP请求(并标记为:remote
)的元素的事件更改为AJAX请求。在Rails中,通常会安装jquery Rails
gem,然后通过以下几种方式之一呈现jquery_ujs.js文件:
- 在application.js清单中添加一行
requirejquery\u ujs
- 将
行添加到应用程序布局文件中javascript\u include\u标记:jquery\u ujs
- 将
文件复制到您的资产中,并依靠application.js清单中的某行将其拉入(例如jquery\u ujs
)require\u树。
选择这些方法中的多个会导致库链接两次,并导致出现上述症状。您似乎对这些元素的单击事件有额外的绑定。你确定你没有两次需要
jquery\u ujs
吗?我没有更改java脚本包含的任何默认rails。在我的application.html.erb布局文件中,html头中只有一个java脚本include语句:
application.js中是否需要jquery\u ujs?这就是问题所在。谢谢
<%= form_tag(action_object_path, :remote => true) do -%>
<div><%= submit_tag "run process" %></div>
<% end -%>
POST http://localhost:3000/object/1/action jquery.js?body=1 (line 8527)
POST http://localhost:3000/object/1/action application.js?body=1 (line 8527)