使用jQuery DataTable无法展示C#后端返回JSON数据的问题求助
解决jQuery DataTables展示JSON数据的错误问题
这个错误我之前也碰到过,核心问题出在列配置的写法错误,还有可能存在表格重复初始化的问题,我帮你一步步修正:
错误原因拆解
你看到的Requested unknown parameter '0' for row 0, column 0错误,本质是DataTables找不到你指定的列数据来源:
- 你在
columns里写的{ 'data':data.Prj_Id }是错误的——data是后端返回的数组对象(包含多条项目数据),不是单个项目对象,DataTables会自动遍历数组里的每一条数据,你只需要告诉它要取哪个字段名(字符串形式)即可。 - 如果之前已经初始化过表格,再次调用
dataTable()会导致实例冲突,也可能引发异常。
修正步骤
1. 修正JavaScript的列配置
把columns里的每个data值改成字段名的字符串,比如'Prj_Id',而不是data.Prj_Id。同时推荐使用新版的DataTable()(大写D)API,功能更完善:
function DisplayProjectMasterList() { $.ajax({ url: 'project-master.ashx', type: "POST", dataType: 'json', data: { 'fun': 'DisplayProjectMasterList' }, success: function (data) { console.log(data); if (Chk_Res(data.errorMessage) == false) { $('#tbl').DataTable({ destroy: true, // 关键:销毁旧实例,避免重复初始化报错 paging: true, sort: true, searching: true, scrollY: 200, data: data, columns: [ { 'data': 'Prj_Id' }, { 'data': 'Prj_No' }, { 'data': 'Prj_Name' }, { 'data': 'Cus_Company_Name' }, { 'data': 'Prj_StartDate' }, { 'data': 'Prj_CompletionDate' } ] }); } } }); }
2. 确保HTML表格结构正确
你的表格需要有对应的表头,这样DataTables才能正确匹配列和表头:
<table id="tbl" class="display" style="width:100%"> <thead> <tr> <th>项目ID</th> <th>项目编号</th> <th>项目名称</th> <th>客户公司名称</th> <th>开始日期</th> <th>完成日期</th> </tr> </thead> <tbody></tbody> </table>
3. (可选)优化C#后端代码
为了让前端处理更稳定,建议后端默认返回空数组(而不是空字符串),并设置正确的响应内容类型:
void DisplayProjectMasterList() { // 默认返回空数组,避免无数据时返回空字符串导致前端解析问题 string JSONString = "[]"; DataTable Dt = DB.GetDataTable("Sp_GetProjectMasterList"); if (Dt.Rows.Count > 0) { JSONString = JsonConvert.SerializeObject(Dt); } // 设置正确的JSON响应类型 Context.Response.ContentType = "application/json"; Context.Response.Write(JSONString); }
这样修改后,你的DataTables应该就能正常渲染后端返回的JSON数据了。
内容的提问来源于stack exchange,提问作者Khan Faizan
相关产品推荐
相关产品推荐

