【问题标题】:AJAX request to database对数据库的 AJAX 请求
【发布时间】:2019-09-24 09:04:16
【问题描述】:

我的 Rails 应用程序中有很多复选框页面。

当点击一个复选框时,它的 id 应该立即写入数据库(我使用 postgresql)

Сheckbox id 应该作为数组写入表中。

如何用 ajax 实现?

我的复选框示例:

<input name="skill_list[127]" type="hidden" value="0">
<input class="m-enabled" id="skill_list_127" name="skill_list[127]" type="checkbox" value="1">
<label for="skill_list_127">Zoomerang</label>

【问题讨论】:

  • 您不能直接与 postgresql 交互,您需要使用 Nodejs 或 PHP 等后端技术定义您的 API,并使用 ajax 进行 http 调用,toptal.com/nodejs/secure-rest-api-in-nodejsairpair.com/js/jquery-ajax-post-tutorial 你可以关注这些链接
  • 您可以将表单设为remote: true,并在单击输入时提交表单。在像$( '#form input' ).on('click', function(e){ $( "#form" ).submit(); }); 这样写的 jquery 中,所有的表单数据都将作为 Ajax 发送到您的控制器。
  • 单击复选框时创建一个单击功能,还将具有技能ID的数据属性添加到复选框,当您单击复选框时进行ajax调用,在控制器中采用对应表行skill_id,将您从javascript传递的数据属性推送到数组。用新数组更新skill_id

标签: javascript ruby-on-rails ajax


【解决方案1】:

UserSkillList 控制器:

def create
  skill_id = params[:skill_id].gsub(/\D/, '').to_i if params[:skill_id].present?

  @skill_record = UserSkillList.where(user_id: current_user.id).first

  @skill_record.skill_id += [skill_id]
  @skill_record.save
end

app.js

$('input[type=checkbox]').click(function(){
    if ($(this).is(':checked')) {
        checkbox_id = $(this).attr('id');
        $.ajax({
            type: "POST",
            url: "/user_skill_list",
            data: {skill_id: checkbox_id}
        });
    };
});

【讨论】:

  • 在复选框代码中,对于 attr id,结果将为“skill_list_127”。代码中有附加了 id 整数的字符串。所以先把它分开,然后使用id。给出类似: $(this).attr('id').split("_")[2]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多