具有带有dataType“script”的ajax请求的额外未知参数

时间:2013-09-19 11:34:54

标签: javascript jquery ruby-on-rails ajax

我正在尝试将表单输入中的参数添加到导轨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 %>

link_to看起来像这样:

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

我要做的是将#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;

});
});

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

http://localhost:3000/players?min_weight=0&max_weight=70&utf8=%E2%9C%93&min_age=0&max_age=22&_=1379588007864

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

1 个答案:

答案 0 :(得分:3)

这是一个非缓存参数。

来自DOC

  

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

所以要摆脱这个参数,设置为ajax请求的选项cache:true