Javascript 使用ajax将数据发送到rails中的控制器

Javascript 使用ajax将数据发送到rails中的控制器,javascript,Javascript,我不熟悉JS和rails,所以最近在rails环境中使用ajax遇到了很多困难。如果您能为我的项目发展做出贡献,我将不胜感激。我试图做的是,一旦用户从模式中选择数据,我希望将所选数据发送到控制器中的操作,以便我可以处理数据。我不确定从哪里开始。请帮帮我:(非常感谢 视图: &时代; 选择任务 拯救 取消 JS $(函数(){ $(文档).ready(函数(){ $(“#保存”)。单击(函数(){ var checkedItem=[]; $.each($($输入[name='selecte

我不熟悉JS和rails,所以最近在rails环境中使用ajax遇到了很多困难。如果您能为我的项目发展做出贡献,我将不胜感激。我试图做的是,一旦用户从模式中选择数据,我希望将所选数据发送到控制器中的操作,以便我可以处理数据。我不确定从哪里开始。请帮帮我:(非常感谢

视图:


&时代; 选择任务 拯救 取消
JS


$(函数(){
$(文档).ready(函数(){
$(“#保存”)。单击(函数(){
var checkedItem=[];
$.each($($输入[name='selected']:选中),函数(){
checkedItem.push($(this.val());
});
$('#values').html(“所选值为:“+checkedItem.join(“,”)”);
$.ajax({
键入:“POST”//get、POST、put、delete等操作的请求方法
url:“/users//test”//rails操作的路径
数据:{checked_items:checkedItem.join(“,”)},//在此处附加数据您将在控制器操作中使用参数[:checked_items]获取此数据
success:function(data,textStatus,jqXHR){},//当它成功时,做任何你想做的事情
错误:函数(jqXHR,textStatus,errorshown){}
})
});
});
});

请检查下面的脚本

<script>
  $(function(){
    $(document).ready(function(){

    $("#save").click(function(){
      var checkedItem = [];
      $.each($("input[name='selected']:checked"), function(){
        checkedItem.push($(this).val());
      });
      $('#values').html("selected values are: " + checkedItem.join(", "));
      $.ajax({
        type: "POST", // request method for your action like get,post,put,delete
        url: "/things", // route of your rails action
        data: {checked_items: checkedItem }, // attach data here you will get this data in your controller action with params[:checked_items]
        success: function(data, textStatus, jqXHR){...}, // do whatever you want when it success
        error: function(jqXHR, textStatus, errorThrown){...}
      })
    });

    });

  });

</script>

$(函数(){
$(文档).ready(函数(){
$(“#保存”)。单击(函数(){
var checkedItem=[];
$.each($($输入[name='selected']:选中),函数(){
checkedItem.push($(this.val());
});
$('#values').html(“所选值为:“+checkedItem.join(“,”)”);
$.ajax({
键入:“POST”//get、POST、put、delete等操作的请求方法
url:“/things”//rails操作的路径
数据:{checked_items:checkedItem},//在此处附加数据您将在控制器操作中使用参数[:checked_items]获取此数据
success:function(data,textStatus,jqXHR){…},//当它成功时,做任何你想做的事情
错误:函数(jqXHR,textStatus,errorshown){…}
})
});
});
});

为简单起见,您可以将rails路径作为数据集属性注入该控制器。 例如


为什么要使用普通HTML标记创建输入字段和提交按钮,而不是
rails
?如果复选框上正确设置了
name
属性,则无需编写自定义Ajax。您只需使用
remote:true
提交,这将是对控制器操作的JS请求。正如我所提到的,我不是你擅长这一点,但对如何做感到困惑。你能给我更具体的例子吗?你可以签出和。这不是天方夜谭。很容易实现。试试看,如果你卡住了,我们会帮助你。:)你应该进入这个参数[:checkedItem]。但是如果您没有进入这个参数,请检查服务器的日志。在查找任务之前尝试调试您的操作。如果您仍然不清楚,请告诉我从js脚本中删除
连接(“,”
),因为它将不同的元素与
连接,所以您可以使用我想要的格式!非常感谢,我能快点再问你一个问题吗?如果我想保留检查值。例如,如果用户选择了3个输入,我是否可以保留选择的3个输入?即使页面已重新加载。我需要使用本地存储吗?如果是,你能告诉我怎么做吗?是的,你可以用本地存储你能更新一些关于如何进行本地存储的基本想法吗?如果不是太复杂的话?应该在提交活动上。不点击
<script>
  $(function(){
    $(document).ready(function(){

    $("#save").click(function(){
      var checkedItem = [];
      $.each($("input[name='selected']:checked"), function(){
        checkedItem.push($(this).val());
      });
      $('#values').html("selected values are: " + checkedItem.join(", "));
      $.ajax({
        type: "POST", // request method for your action like get,post,put,delete
        url: "/users/<%= current_user.id %>/test", // route of your rails action
        data: {checked_items: checkedItem.join(", ")}, // attach data here you will get this data in your controller action with params[:checked_items]
        success: function(data, textStatus, jqXHR){}, // do whatever you want when it success
        error: function(jqXHR, textStatus, errorThrown){}
      })
    });

    });

  });
      </script>
<script>
  $(function(){
    $(document).ready(function(){

    $("#save").click(function(){
      var checkedItem = [];
      $.each($("input[name='selected']:checked"), function(){
        checkedItem.push($(this).val());
      });
      $('#values').html("selected values are: " + checkedItem.join(", "));
      $.ajax({
        type: "POST", // request method for your action like get,post,put,delete
        url: "/things", // route of your rails action
        data: {checked_items: checkedItem }, // attach data here you will get this data in your controller action with params[:checked_items]
        success: function(data, textStatus, jqXHR){...}, // do whatever you want when it success
        error: function(jqXHR, textStatus, errorThrown){...}
      })
    });

    });

  });

</script>
<form method="post" data-url="<%= tasks_path %>">
  $('#save').on('click', function (e) {
    e.preventDefault();
    $.ajax({
      type: $(this).method || "GET",
      url: this.dataset.url,
      data: $(this).serialize(),
      success: function (response) {
        console.log(response)
      },
      error: function (error) {
        console.log(error);
      }
    });
  });