1

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 リクエストでdataTypetoを変更すると、パラメータが消えます。このパラメータを削除して、引き続きajax リクエストでJSON使用するにはどうすればよいですか?dataType: "script"

4

1 に答える 1

5

これは非キャッシュ パラメータです。

DOCから:

cache (デフォルト: true、dataType 'script' および 'jsonp' の場合は false) タイプ: ブール値 false に設定すると、要求されたページがブラウザによってキャッシュされないように強制されます。注: キャッシュを false に設定すると、HEAD および GET リクエストでのみ正しく機能します。GET パラメータに「_={timestamp}」を追加することで機能します。このパラメーターは、GET によって既に要求された URL に対して POST が行われる IE8 を除いて、他のタイプの要求には必要ありません。

したがって、このパラメーターを取り除くには、ajax リクエストのオプションとして設定しますcache:true

于 2013-09-19T11:56:29.057 に答える