Javascript 如何进行Ajax复选框回调

Javascript 如何进行Ajax复选框回调,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,基于“”,我尝试构建一个复选框Ajax POST调用 这个电话似乎起作用了,但我看不到有办法附加回拨 在“”中,您似乎可以通过以下代码执行此操作: $(document).ready -> $("#new_article").on("ajax:success", (e, data, status, xhr) -> $("#new_article").append xhr.responseText ).on "ajax:error", (e, xhr,

基于“”,我尝试构建一个复选框Ajax POST调用

这个电话似乎起作用了,但我看不到有办法附加回拨

在“”中,您似乎可以通过以下代码执行此操作:

$(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>"
$(文档).ready->
$(“#新文章”)。关于(“ajax:success”,(e,data,status,xhr)->
$(“#新文章”)。追加xhr.responseText
).on“ajax:error”(e,xhr,status,error)->
$(“#新文章”)。追加“错误

但这似乎不起作用

当我将其附加到checkbox类时(因此,在成功点击之后,不会触发任何内容,而不是
new\u article
)。有什么想法吗?我应该把它附加到别的东西上吗?我查看了代码,没有在复选框周围生成表单


这里有更多的内容似乎支持前面的JavaScript代码是如何工作的,但不起作用

如果您使用的是
remote:true
,则可以使用:

有几件事需要了解:

  • 如果已启用,则始终从
    文档
    对象(JQuery只能绑定到使用
    DOM
    加载的元素)
  • 如果您试图“捕获”Ajax响应(在本例中是从
    远程:true
    ),则需要将其绑定到发送请求的元素。通常,这是一个表单,但在您的情况下,它是复选框

  • 当然,这取决于您通过
    rails\u 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
    
    #查看
    #app/assets/javascripts/application.coffee
    $(文档)。在“更改”上,“#复选框”,(e)->
    $.ajax
    url:“您的/path/as/a/string”,
    数据:$(this).val(),
    成功:(数据)->
    //做点什么,
    错误:(数据)->
    //做点什么
    
    答案一如既往地棒@RichPeckas,我尝试时它不起作用,但当你回答时,它起作用了!我仍然不知道我做错了什么,但它现在正在进行。还要注意,您需要以JSON格式发送响应。
    #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"
    
    #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