asp.net-core - Razor 页面 Datatables.net Ajax 回发
问题描述
我在我的剃须刀页面中使用 datatables.net,我有一个下拉列表,用于更改下面数据表中的数据是代码
$(document).ready(function () {
//$("#taskDt").DataTable();
var table = $("#taskDt").DataTable({
paging: true,
responsive: true,
searching: true,
ordering: true,
order: [[1, "asc"]]
});
$("#ddlGroup").change(function(){
var a= $("#ddlGroup Option:Selected").text();
var b= $("#ddlGroup Option:Selected").val();
//alert(b);
//this.form.submit();
$.ajax({
//dataType: 'json',
url: '/page/Index?handler=GET',
type: 'GET',
dataType: "text",
data: { "Id": b },
processing: true,
serverSide: true,
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
success: function (data) {
console.log(data);
//table.ajax.reload();
$('#taskDt').DataTable().ajax.reload(true)
//$('#taskDt').DataTable().ajax.reload();
},
error: function () {
alert("AJAX Request Failed, Contact Support");
}
});
})
好吧,返回的数据是完整的 html 页面,我收到无效 JSON 的错误,当我设置 dataType:“JSON”如果失败并警告 ajax 请求失败
任何帮助都感激不尽。
解决方案
这是一个演示,展示如何在下拉列表更改时更新数据表数据:
模型:
public class Test
{
public int Id { get; set; }
public string Name { get; set; }
}
测试数据表.cshtml:
<select id="ddlGroup">
<option>Choose Id</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<table id="taskDt">
<thead>
<tr>
<td>Id</td>
<td>Name</td>
</tr>
</thead>
<tbody></tbody>
</table>
@section scripts{
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.21/css/jquery.dataTables.css">
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.js"></script>
<script>
var table;
function LoadData() {
table = $("#taskDt").DataTable({
"ajax": {
url: '?handler=GET',
type: 'GET',
processing: true,
serverSide: true,
},
"columns": [
{ "data": "id", "width": "50%" },
{ "data": "name", "width": "50%" },
],
paging: true,
responsive: true,
searching: true,
ordering: true,
order: [[1, "asc"]]
});
}
$(document).ready(function () {
LoadData();
})
$("#ddlGroup").change(function () {
table.ajax.url("?handler=GET&&Id=" + $("#ddlGroup Option:Selected").val()).load();
});
</script>
}
TestDataTable.cshtml.cs(我用假数据来测试):
public class TestDataTableModel : PageModel
{
public void OnGet()
{
}
public JsonResult OnGetGet(int? Id)
{
List<Test> l = new List<Test>();
if (Id == null)
{
l = new List<Test> { new Test { Id = 1, Name = "1" }, new Test { Id = 2, Name = "2" },new Test { Id = 3, Name = "3" } };
}
else
{
l = new List<Test> { new Test { Id = Convert.ToInt32(Id), Name = Id+"" }};
}
return new JsonResult(new { draw = 1, recordsFiltered = l.Count(), recordsTotal = l.Count(), data = l });
}
}
推荐阅读
- git - 将 MINGW64 集成到 Visual Studio 代码中
- r - 在 R 中应用 SMOTE 时如何解决此错误?
- angular - 组件的 Angular Material 12 自定义主题未按预期工作
- javascript - TypeError : Object (...) is not a function react native stack navigation
- hough-transform - 如何使用霍夫变换检测数据点上的直线?
- api - 如何使用 API 请求使用 Rally 的用户故事 ID 获取所有测试用例 ID
- python - 在候选中找到总和为目标的所有组合
- javascript - 为什么嵌套在事件回调中的解析函数永远不起作用?
- c# - Entity Framework 两个具有不同多重性的虚拟属性
- javascript - 我的 React Js 网站在我的电脑上运行良好,但是当我尝试在手机上运行它时,它显示,无法读取未定义的属性(正在读取“地图”)