在使用Razor和C#的MVC结构中,我试图将数据库中的数据显示为jquery DataTable . 但是,我对数据表序列化和解释JSON数据的方式存在问题 .
Javascript (on a CSHTML page):
<script>
$(document).ready(function () {
var validBarcode = @Model.ActiveBarcode.ToString();
$('#example').DataTable({
"ajax": {
"url": '@Url.Action("ParseLogChangesData", "Article")',
"dataSrc": '',
"data": {barcode: barcode},
"type":"POST"
},
"columns": [
{data: 'Header1'},
{data: 'Header2'},
{data: 'Header3'},
{data: 'Header4'},
{data: 'Header5'},
{data: 'Header6'},
{data: 'Header7'}
]
});
});
</script>
ParseLogChangesData (in the controller) :
public ActionResult ParseLogChangesData(string barcode)
{
if (barcode!= null && barcode!= "0")
{
Changelog log = new Changelog(barcode);
string json = JsonConvert.SerializeObject(log);
return Json(json, JsonRequestBehavior.AllowGet);
}
else
return null;
}
日志对象是从LINQ查询到我的数据库构造的 .
ParseLogChangesData返回的“json”字符串包含一个格式化的对象列表:
“[{\”Header1 \“:\”Value1 \“,\”Header2 \“:\”Value2 \“,\”Header3 \“:\”Value3 \“,\”Header4 \“:\”Value4 \ “\ ”Header5 \“:\ ”值5 \“,\ ”Header6 \“:\ ”Value6 \“,\ ”Header7 \“:\ ”Header7 \“},{\ ”头1 \“:\” 值1 \ ” [...]}
从该数据我应该能够构建一个jquery DataTable,因为它似乎根据datatables.net上的示例正确格式化 .
但是,如果我查看在浏览器中发送的响应(此处显示在Firefox中,但我对IE11有同样的问题需要工作):
等等每个对象 .
因此获得如此错误:
因为当jquery.DataTables尝试完成它的工作时:
// Got the data - add it to the table
for ( i=0 ; i<aData.length ; i++ ) {
_fnAddData( settings, aData[i] );
}
aData.length是4976 ...它首先找不到“Header1”,但是“H”!
我可能会遗漏数据被序列化的方式,但我不知道它可能是什么 . 你能帮帮我吗?
1 回答
更改
ParseLogChangesData
功能 . 更换:附: