このメソッド呼び出しをどのように構成すればよいですか?
このような:
$('._select_change').change(function() {
var param = $(this).val();
$.get('@Url.Action("List")', { someid: param }, function (data) {
$('#changeArea').replaceWith(data);
});
});
$.get()
メソッドの 2 番目の引数を使用して、クライアントからの AJAX 呼び出しにクエリ文字列引数を渡す方法に注目してください。
これは、ドロップダウンの選択された値を、someid
アクション引数を取る List コントローラ アクションに渡します。
public ActionResult List(string someid)
{
...
}
したがって、JavaScript デバッグ ツールの [ネット] タブに表示されるのは、サーバーに送信される次の AJAX 要求です。
GET /somecontroller/List?someid=123
$.get()
ただし、この方法を使用する場合に注意する必要があることが 1 つあります。通常、GET リクエストはブラウザによってキャッシュされます。これは、ブラウザのように同じ URL に多くのリクエストを送信すると/list?someid=123
、結果がキャッシュされ、最初のリクエストのみがサーバーに到達することを意味します。しかし、毎回新鮮なデータをサーバーに送り、リクエストごとにサーバーにアクセスしたい場合はどうでしょうか。この場合の推奨される解決策は、$.ajax()
代わりにキャッシュを無効にする方法を使用することです。
$('._select_change').change(function() {
var param = $(this).val();
$.ajax({
url: '@Url.Action("List")',
data: { someid: param },
cache: false,
success: function (data) {
$('#changeArea').replaceWith(data);
}
});
});
これにより、各リクエストにランダムなクエリ文字列パラメーターが追加され、結果がクライアント ブラウザーによってキャッシュされないようになります。