我在我的索引页面上有一个用于对记录进行排序的表单,我想为它添加一些Ajax功能但是由于某些原因它在我添加后不会立即发送表单参数阿贾克斯混合。
这是我的表格:
<div id="sort-options">
<%= form_tag uploads_path, :method => "get", :remote => true do %>
<%= select_tag "sort", options_for_select([["Creation Date", "created_at"], ["File Name", "name"], ["Rating", "rating_average"], ["Downloads", "downloads"]]) %>
<%= select_tag "direction", options_for_select([["Descending", "desc"], ["Ascending", "asc"]]) %>
<%= submit_tag "Sort" %>
<% end %>
</div>
我的Ajax javascript:
jQuery(document).ready(function($)
{
$(function () {
$('#sort-options input, .pagination a').live("click", function () {
$.get(this.href, null, null, 'script');
return false;
});
});
});
当我点击提交按钮并查看我的Firebug控制台以查看发生了什么时,它已经成功地调用了Ajax并且它为页面服务没有问题。但是它完全忽略了我发送的参数,并且在重新查询数据库时它没有考虑到这一点。如果我拿出&#39;:remote =&gt;真正的&#39;并删除指向Ajax文件的链接,params成功发送回索引操作 - 只是没有Ajax :(
我应该补充一点,Ajax目前适用于我在同一页面上的分页。
答案 0 :(得分:3)
问题是您将另一个单击处理程序绑定到提交按钮,该按钮会覆盖Rails的内置AJAX功能(:remote => true
)。您的选择器#sort-options input, .pagination a
不仅匹配分页链接,还匹配表单的提交按钮。按钮没有href属性,这是您作为URL传递给$.get()
的属性。所以$.get(this.href, ...)
尝试向空URL发出一个AJAX GET请求(就好像它是一个空字符串,因此是当前的URL,没有任何GET参数)。