【发布时间】:2017-09-29 17:58:20
【问题描述】:
我正在开发一个项目,我在其中使用数据表和从我的服务器返回的 JSON 填充 HTML 表,该 JSON 最初是一个类的列表。
每个元素的代码如下:
表格 HTML:
<table id="tablaDetalle2" class="display" role="grid" aria-describedby="example2_info">
<thead>
<tr>
<th>id</th>
<th>idFlight</th>
<th>idSample</th>
<th>import</th>
</tr>
</thead>
<tbody>
</table>
Javascript:
$('#tablaDetalle2').DataTable({
"bProcessing": true,
"sAjaxSource": "@Url.Action("Detalle","Muestra", new {idExp = 1, descrExp="abc"})"
});
服务器代码:
public ActionResult Detalle(int idExp, string descrExp)
{
List<Models.Muestra_Detalle> aaData = new List<Models.Muestra_Detalle>(); //Returns a list of the data
aaData = Manager.MuestraManager.Cargar_Detalle(idExp);
var jsonSerializer = new JavaScriptSerializer();
var JsonFinal = jsonSerializer.Serialize(aaData);
try
{
return Json(new { JsonFinal }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{ return null; }
}
JsonFinal 返回的对象结构如下:
[{"id":"1","idFlight":1,"idSample":3217.5,"import":0}]
但我收到以下错误:
Unhandled exception at line 188, column 47 in
http://localhost:61298/Content/DataTables/jquery.dataTables.min.js
0x800a138f - JavaScript runtime error: Unable to get property 'length' of undefined or null reference
例如,如果我声明一个硬编码变量:
var data = new[] { "id:A", "idFlight:B", "idSample:C", "import:D" };
即使变量数据中定义的内容与表格中的显示方式不匹配,也不会出现错误。
我已经尝试了很多方法来做到这一点,有人说它只是没有数据可以显示在表格中,这似乎是解决问题后最好的方法。
硬编码一个返回给datatables的变量最大的区别是变量data是一个有4个不同字符串的对象,而使用JsonSerializer的结果就跟一个字符串一样,我不太清楚。
日期
将 JsonFinal 重命名为 aaData,一些错误不同的弹出窗口,将尝试你们中的一些人所说的并报告更多详细信息。
来自服务器的新代码:
public ActionResult Detalle(int idExp, string descrExp)
{
ViewBag.Exp = descrExp;
List<Models.Muestra_Detalle> azaData = new List<Models.Muestra_Detalle>();
aaData = Manager.MuestraManager.Cargar_Detalle(idExp);
var jsonSerializer = new JavaScriptSerializer();
var aaData = jsonSerializer.Serialize(azaData);
//string data2 = JsonFinal.Replace("\\", "");
//var data = new[] { "id:A", "idgasto:B", "ImpGasto:C", "idMuestra:D" };
return Json(new { aaData }, JsonRequestBehavior.AllowGet);
}
新错误:DataTables 警告:表 id=tablaDetalle2 - 请求第 0 行第 0 列的未知参数“id”。有关此错误的详细信息,请参阅https://datatables.net/tn/4。
已经过去了,什么都弄不出来。
就像在返回的JSON中找不到列id一样,因为它在表中变为null。
【问题讨论】:
标签: javascript json asp.net-mvc datatable