这是我的下拉列表:
<select id="sel0">
<option value="">Todos</option>
@foreach (var item in Model.Select(l => l.Fecha).Distinct())
{
<option value="@lines">@lines</option>
}
</select>
&#13;
这是我的Ajax电话:
$('#sel0').on('change', function () {
dataTable.columns('.fechas').search(this.value).draw();
});
$("form").submit(function () {
$.ajax({
url: '@Url.Action("MethodName","HomePosController")',
type: 'POST',
cache: false,
data: { Selected: $("#sel0").val() },
success: function (data) {
//
}
});
});
&#13;
这是我的控制器名为&#39; HomePosController&#39;:
public ActionResult MethodName(string Selected)
{
var db = new ArponClientPosContext();
String value = Selected;
var json4 = JsonConvert.SerializeObject(Selected);
System.IO.File.WriteAllText(@"C:\inetpub\wwwroot\potzolcalli.brain.arpon.com\valorselected.txt", json4);
return View("~/Views/HomePos/Index.cshtml", db.Pos.ToList());
}
但是,只要你选择我的下拉选项没有任何反应,页面没有刷新也没有创建文件我做错了什么?
答案 0 :(得分:1)
如果您希望它在下拉列表中更改,那么您必须在更改事件中发送ajax调用:
$('#sel0').on('change', function () {
dataTable.columns('.fechas').search(this.value).draw();
$.ajax({
url: '@Url.Action("MethodName","HomePos")',
type: 'POST',
cache: false,
data: { Selected: $("#sel0").val() },
success: function (data) {
//
}
});
并且您不必编写完整的Controller类名称,您必须跳过控制器后缀,这是常规,后面是mvc中的Url助手,这样生成的URL将是错误的, ajax调用将失败。
答案 1 :(得分:1)
每当y选择我的下拉选项时都没有发生
嗯,这种情况发生了:
dataTable.columns('.fechas').search(this.value).draw();
但是这并没有调用AJAX请求。它确实没有做任何事情。
如何触发ajax?我希望它在下拉列表中更改值后触发
在这种情况下,您希望在select
元素的change
事件中执行此操作。目前,您在此处执行AJAX请求:
$("form").submit(function () {
// AJAX
});
也就是说,您在表单提交事件中执行请求。只需将其添加到下拉列表的更改事件中:
$('#sel0').on('change', function () {
dataTable.columns('.fechas').search(this.value).draw();
$.ajax({
url: '@Url.Action("MethodName","HomePosController")',
type: 'POST',
cache: false,
data: { Selected: $("#sel0").val() },
success: function (data) {
//
}
});
});
页面没有刷新
嗯,不。这不会发生在AJAX请求中。目前您的success
回调为空,因此页面上不会发生任何事情。无论你想发生什么,都需要进行回调。