【发布时间】:2016-06-02 23:23:26
【问题描述】:
我正在尝试使用 ajax 通过获取请求发送数据,但似乎没有发送参数。我有一个页面显示来自数据库的随机项目。您可以通过导航栏中的链接访问此页面。进入此页面后,有一个链接可让您跳过当前项目以查找另一个随机项目,以确保下一个项目不是用户刚刚查看的项目。
routes.rb
get 'pending', to: 'items#pending'
查看
<%= link_to 'Skip', '', class: "btn btn-default btn-xs",
id: "skip-btn",
:'data-item-id' => @pending_item.id %>
控制器
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。此页面应始终显示来自 db 的随机记录。我需要发送参数的唯一原因是确保没有记录是连续重复的,即使它们是随机的。
【问题讨论】:
-
网络请求中的id看到了吗?
-
@epascarello 我在哪里可以找到这个?我正在使用 chrome 浏览器
-
添加一个 console.log($(this).data("item-id")) 以确保有东西要发送
-
在待处理操作的开头添加“p 参数”以在终端中查看正在传递的内容
-
在 Chrome 的开发者控制台中查看网络面板
标签: javascript ruby-on-rails ajax