#json #ajax #asp.net-core
#json #ajax #asp.net-core
Вопрос:
Я пытаюсь передавать значения двух элементов через вызов Ajax в мои параметры JsonResult каждый раз, когда меняются значения, но он не принимает новые значения (остается как старые значения).
Мой html и javasript:
<select class="form-control" id="selspecialist" asp-for="SelSpecialist" asp-items="Model.SpecialistList"></select>
<select class="form-control" id="selreqtype" asp-for="SelReqType" asp-items="Model.ReqTypeList"></select>
$(document).ready(function () {
$('#mytable').DataTable({
processing: true,
serverSide: true,
ajax: {
url: "?handler=loadListJson" "amp;selSpecialist=" document.getElementById("selspecialist").value
"amp;selReqType=" document.getElementById("selreqtype").value,
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
beforeSend: function (xhr) {
xhr.setRequestHeader("RequestVerificationToken",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
},
columns: [
{ data: "part" },
{ data: "requestTo" },
{ data: "subGroup" },
{ data: "dueDt", type: 'date' },
{ data: "desc" },
{ data: "reason" },
{ data: "reqType" },
{ data: "lastUpdateDt", visible: false },
{
data: null,
render: function (data, type, row) {
return "<a href='#' class='btn btn-primary btn-xs' onclick=LoadPartUpdate('" row.part "'); ><i class='fa fa-edit' aria-hidden='true' style='color:#ffffff; font-size:13px;'></i></a>";
}
}
]
});
$('#selspecialist').on('change', function () { $('#mytable').DataTable().draw(); });
$('#selreqtype').on('change', function () { $('#mytable').DataTable().draw(); });
});
Мой метод JsonResult:
public JsonResult OnPostLoadListJson(string selSpecialist, string selReqType)
{
vwOpenRequests = _context.vwOpenRequests.OrderBy(x => x.Sort);
if (selSpecialist != null) { vwOpenRequests = vwOpenRequests.Where(s => s.RequestTo.Contains(selSpecialist)); }
if (selReqType != null) { vwOpenRequests = vwOpenRequests.Where(s => s.ReqType.Contains(selReqType)); }
return new JsonResult(new { data = vwOpenRequests });
}
Комментарии:
1. Привет, вы передаете значения в URL? разве это
get
не запрос?2. @Swati верно, но я не смог получить параметр «данные» в ajax для передачи моих значений вообще (они всегда были нулевыми) и обнаружил, что это сработало вместо этого, вот почему.
Ответ №1:
Измените событие onchange, вы должны перезагрузить datatable с новыми параметрами, такими как:
$('#selspecialist').on('change', function () {
$('#mytable').DataTable().ajax.url("?handler=loadListJson" "amp;selSpecialist=" document.getElementById("selspecialist").value
"amp;selReqType=" document.getElementById("selreqtype").value).load();
});
$('#selreqtype').on('change', function () {
$('#mytable').DataTable().ajax.url("?handler=loadListJson" "amp;selSpecialist=" document.getElementById("selspecialist").value
"amp;selReqType=" document.getElementById("selreqtype").value).load();
});