带有数据类型“脚本”的 ajax 请求的额外未知参数

Opt*_*tte 1 javascript ajax jquery ruby-on-rails

我正在尝试将表单输入中的参数添加到link_to.js.erb. (为清楚起见,我不是要提交表单。)表单如下所示:

form_tag players_path, method: 'get', id: 'my_form' do%>
  <%= number_field_tag :min_age, params[:min_age], id: 'min_age' %>
  <%= number_field_tag :max_age, params[:max_age], id: 'max_age' %>
  <%= submit_tag  'go'%>
<% end %>
Run Code Online (Sandbox Code Playgroud)

link_to如下所示:

<%= link_to '70 lbs & Under', players_path(:min_weight => 0, :max_weight => 70), id: 'my_link',  remote: true %>
Run Code Online (Sandbox Code Playgroud)

我想要做的是将 的值添加#my_form#my_link. 为此,我正在使用 jQuery:

$(document).ready(function(){
   $('#my_link').click (function(){
    var parameterValues = $('#my_form').serialize();
    $.ajax({
        type:'GET',
        url: $(this).attr('href'),
        data: parameterValues,
        dataType:"script"
    });
    return false;

});
});
Run Code Online (Sandbox Code Playgroud)

这将表单输入值添加到link_to参数中,但也添加了一个额外的参数_,我不知道它来自哪里。生成的请求 URL 如下所示:

http://localhost:3000/players?min_weight=0&max_weight=70&utf8=%E2%9C%93&min_age=0&max_age=22&_=1379588007864
Run Code Online (Sandbox Code Playgroud)

最后一个参数_=1379588007864来自哪里?当我在 ajax 请求中更改dataTypetoJSON时,参数消失。我怎样才能摆脱这个参数并仍然dataType: "script"在ajax请求中使用?

A. *_*lff 5

这是一个非缓存参数。

DOC

缓存(默认值:true,false 用于 dataType 'script' 和 'jsonp') 类型:Boolean 如果设置为 false,它将强制浏览器不缓存请求的页面。注意:将缓存设置为 false 仅适用于 HEAD 和 GET 请求。它的工作原理是将“_={timestamp}”附加到 GET 参数。其他类型的请求不需要该参数,除非在 IE8 中对已由 GET 请求的 URL 进行 POST。

因此,要摆脱此参数,请将其设置为 ajax 请求的选项 cache:true