我应该如何构造这个方法调用?
像这样:
$('._select_change').change(function() {
var param = $(this).val();
$.get('@Url.Action("List")', { someid: param }, function (data) {
$('#changeArea').replaceWith(data);
});
});
请注意我如何使用该$.get()
方法的第二个参数将查询字符串参数从客户端传递给 AJAX 调用。
这会将下拉列表的选定值传递给采用someid
action 参数的 List 控制器操作:
public ActionResult List(string someid)
{
...
}
因此,您将在 javascript 调试工具的 Net 选项卡中看到以下 AJAX 请求正在发送到服务器:
GET /somecontroller/List?someid=123
$.get()
但是,如果您使用这种方法,您应该注意一件事。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);
}
});
});
这将在每个请求上附加一个随机查询字符串参数,以确保结果不被客户端浏览器缓存。