【问题标题】:JQuery posting form via AJAX not triggering rails respond_to format.js通过 AJAX 的 JQuery 发布表单不会触发 rails respond_to format.js
【发布时间】:2013-09-06 19:09:47
【问题描述】:

我有一个按参数排序的简单表单。当我的下拉菜单发生变化时,我称之为:

$.post("/busca", $("#order_form").serialize(), dataType: "script")

在 Rails 控制器方面,我有一个简单的 format.js 来处理 ajax 调用。 问题是这行不通。 js.erb 模板永远不会被渲染。

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

【问题讨论】:

  • 您好像没有在请求中指定格式

标签: jquery ajax ruby-on-rails-4


【解决方案1】:

好的,我想通了。当你有一个像这样的 respond_to 块时:

respond_to do |format|
  format.html
  format.js
end

它不会起作用。您需要先设置 js 响应而不是 HTML 响应。不要问我为什么。 这是适合我的:

respond_to do |format|
  format.js
  format.html
end

【讨论】:

  • 检查浏览器发送的 Accept 标头。如果 Accept 标头有“/”(即任何格式都可以),那么将触发 respond_to 中的第一个格式块。如果要确保调用 .js 块,那么一种方法是确保 Accept 标头具有“text/javascript”。您可以在通过 jQuery 或任何框架发送任何 ajax 请求时设置接受标头。
【解决方案2】:

好像所有post参数都是强制的:

jQuery.post( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )

这样做时我能够得到js:

$.post("/busca", $("#order_form").serialize(), function() { }, "script")

不管format.x 订单

【讨论】:

  • 仍然没有解释为什么它在没有强制回调的情况下工作,当你首先拥有 format.js 时
猜你喜欢
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-19
  • 2015-05-20
  • 2015-11-04
相关资源
最近更新 更多