javascript - Rails - 为什么 ajax 不发送参数到 GET 请求

标签 javascript ruby-on-rails ajax

我正在尝试使用ajax通过get请求发送数据,但参数似乎没有被发送。我有一个页面显示数据库中的随机项目。您可以通过导航栏中的链接访问此页面。进入此页面后,会出现一个链接,允许您跳过当前项目以查找另一个随机项目,确保下一个项目不是用户刚刚查看的项目。

routes.rb

获取“待处理”,至:“items#pending”

查看

<%= link_to 'Skip', '', class: "btn btn-default btn-xs",
                     id: "skip-btn",
                     :'data-item-id' => @pending_item.id %>

Controller

def pending
    @previous_pending_item_id = params[:id] || 0
    @pending_items = Item.pending.where("items.id != ?", @previous_pending_item_id)
    @pending_item = @pending_items.offset(rand @pending_items.count).first
    respond_to do |format|
      format.js
      format.html
    end
  end

我对 html 和 js 都有响应,因为我正在使用导航栏链接以及页面上的链接的操作。页面上的链接是跳过按钮,应该会弹出另一个随机项目。

sitewide.js.erb

  $('#skip-btn').on('click', function () {
    $.ajax({
      data: {id: $(this).data("item-id")},
      url: "/pending"
    });
  });

当我查看服务器日志时,显示 Started GET "/pending"... 但没有提及正在发送的参数。我错过了什么?

我使用 ajax 的原因是我不希望参数显示在 url 中。

为了澄清,我需要访问此页面时的 url 始终为/pending,且在 url 中没有参数或附加 :id。此页面应始终显示数据库中的随机记录。我需要发送参数的唯一原因是确保没有记录连续重复,即使它们是随机的。

最佳答案

我认为您需要阻止默认链接操作:

  $('#skip-btn').on('click', function (event) {
    event.preventDefault();
    ...
  });

关于javascript - Rails - 为什么 ajax 不发送参数到 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37574085/

相关文章:

ruby-on-rails - 为什么验证会覆盖旧限制

ruby-on-rails - Rails 事件记录导入 : How do I know how many records to insert in one batch?

javascript - 某些字段 id 的 Ajax POST 数据

javascript - 在下面添加行时更改单元格值

javascript - JavaScript 如何将 (.length) 属性存储在变量中?

ruby-on-rails - Mongoid - 同一个外域的两个逆域

javascript - 将多个选择发送到服务器

javascript - 更改 ajax 成功回调按钮的文本

javascript - 使用 JavaScript 创建文件夹

javascript - mvc5 的日期时间的 DataFormatString