如何进行 Ajax 复选框回调
How to make an Ajax checkbox callback
构建"Rails change boolean value with checkbox and jquery ajax",我试图构建一个复选框Ajax POST调用。
调用似乎有效,但无法附加我可以看到的回调。
在"在 Rails 中使用 JavaScript"中,您似乎可以通过以下代码来做到这一点:
$(document).ready ->
$("#new_article").on("ajax:success", (e, data, status, xhr) ->
$("#new_article").append xhr.responseText
).on "ajax:error", (e, xhr, status, error) ->
$("#new_article").append "<p>ERROR</p>"
但这似乎行不通。
当我将其附加到复选框类(因此而不是new_article
)时,成功命中后不会触发任何内容。有什么想法吗?我应该把它附加到别的东西上吗?我查看了代码,我的复选框周围没有生成任何表单。
这里有更多链接似乎支持以前的JavaScript代码是它应该工作的方式,但没有工作。
如果您使用的是 remote: true
,则可以使用以下方法:
#view
<%= check_box_tag :param_name, "value", false, id: "check_box", data: { remote: true, url: your_path} %>
--
remote: true
调用 rails_ujs
,它具有一系列事件钩子(您在上面使用)。您需要将 JS 绑定到这些事件钩子,以便检索所需的响应:
#app/assets/javascripts/application.coffee
$(document).on("ajax:success", "#check_box", (data, status, xhr) ->
$("#new_article").append xhr.responseText
).on "ajax:error", "#check_box", (e, xhr, status, error) ->
$("#new_article").append "Error"
需要了解的几件事:
- 如果启用了
turbolinks
,请始终从document
对象委托(JQuery 只能绑定到加载DOM
的元素) - 如果您尝试"捕获"Ajax响应(在本例中来自
remote: true
),则需要将其绑定到发送请求的元素。通常,这将是一个表单,但在您的情况下,它是复选框
当然,这取决于您通过rails_ujs
remote: true
帮助程序发送请求的想法。相反,如果你想用"裸"JQuery发送请求,你需要使用:
#view
<%= form_tag ... do %>
<%= check_box_tag :x, "y", id: "check_box" %>
<% end %>
#app/assets/javascripts/application.coffee
$(document).on "change", "#check_box", (e) ->
$.ajax
url: "your/path/as/a/string",
data: $(this).val(),
success: (data) ->
// do something,
error: (data) ->
// do something
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 正在验证8个真/假复选框或复选框中的2个
- 取消选中通过开机自检 [] 中的回显选中的复选框
- “验证阻止”复选框将自动回发
- 停止自动回发复选框的事件传播
- 在回发后无法识别的选中项中启用禁用的复选框列表
- 如何进行 Ajax 复选框回调
- IE issue-使用复选框/单选按钮时,jQuery.change()不会触发回调
- 使用Ajax的json回调元素来选中已操作的复选框
- 在更改时附加未选中的复选框回调
- jQuery:如何在删除复选框后回调/恢复
- 复选框,用于从数据库回显的每个任务
- 如何在回发时保留禁用的复选框
- HTML表单中复选框选中元素的回显值
- 散景-检查复选框与按钮/复选框回调
- 动态检查asp.net复选框,不回发
- ASP.Net复选框回发未触发
- 选中复选框“立即回显提交”按钮
- Reactjs:复选框状态为更新,然后在回调函数终止时恢复
- 刷新页面后保持回显复选框处于选中状态