JQuery通过AJAX发布表单不会触发rails respond_to format.js

ren*_*ojf 1 ajax jquery ruby-on-rails-4

我有一个简单的表格与param订单.当我的下拉列表发生变化时,我称之为:

$.post("/busca", $("#order_form").serialize(), dataType: "script")
Run Code Online (Sandbox Code Playgroud)

在rails控制器端,我有一个简单format.js的处理ajax调用.事情是,这是行不通的.该js.erb模板从来没有显示.

我的日志显示Processing by BuscaController#index as */*,我不知道它*/*代表什么.有人能帮我吗?

ren*_*ojf 18

好的,我明白了.当你有一个像这样的respond_to块:

respond_to do |format|
  format.html
  format.js
end
Run Code Online (Sandbox Code Playgroud)

不起作用.您需要首先设置js响应而不是HTML响应.不要问我为什么.这是适合我的那个:

respond_to do |format|
  format.js
  format.html
end
Run Code Online (Sandbox Code Playgroud)

  • 检查浏览器发送的Accept标头.如果Accept标头有"*/*"(即任何格式为Ok),则respond_to中的第一个格式块将触发.如果要确保调用.js块,则一种方法是确保Accept标头具有"text/javascript".您可以通过jQuery或任何框架发送任何ajax请求时设置接受标头. (2认同)