Javascript 正在逐个字符发送JSON响应?
在使用Razor和C#的MVC结构中,我试图将数据库中的数据显示到jquery数据表中。但是,我对datatable序列化和解释JSON数据的方式有一个问题 Javascript(在CSHTML页面上):Javascript 正在逐个字符发送JSON响应?,javascript,c#,jquery,json,datatable,Javascript,C#,Jquery,Json,Datatable,在使用Razor和C#的MVC结构中,我试图将数据库中的数据显示到jquery数据表中。但是,我对datatable序列化和解释JSON数据的方式有一个问题 Javascript(在CSHTML页面上): <script> $(document).ready(function () { var validBarcode = @Model.ActiveBarcode.ToString(); $('#example').DataTa
<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>
日志对象是从LINQ查询构造到我的数据库的
ParseLogChangesData返回的“json”字符串包含一个对象列表,其格式如下:
“[{\'Header1\”:“Value1\”,“Header2\”:“Value2\”,“Header3\”:“Value3\”,“Header4\”:“Value4\”,“Header5\”:“Value5\”,“Header6\”:“Value6\”,“Header7\”:“Header7\”,{\'Header1\:“Value1\”,[…]
根据这些数据,我应该能够构造一个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] );
}
//已获取数据-将其添加到表中
对于(i=0;i更改ParseLogChangesData
函数。替换:
string json = JsonConvert.SerializeObject(log);
return Json(json, JsonRequestBehavior.AllowGet);
与:
您是否需要使用JsonConvert.SerializeObject(log);
?难道您不能返回Json(log)
?它看起来被字符串化了两次。您正在将字符串序列化为一个字符数组。上面的客户端AJAX请求中似乎没有数据类型:Json
,请尝试将其用作返回Json(log)的补充。我认为没有必要使用JsonRequestBehavior.AllowGet
,因为它是一个post
动词。@Alexandru IonutMihai:这使它更简单:-)啊,好吧,我现在确实觉得自己很愚蠢……它像你上面说的那样被字符串化了两次,所以如果我理解正确的话,一个字符串被转换成了一个字符?无论如何,感谢你的帮助,这修复了它,所以我会尽快批准这个解决方案。一个(json)字符串被转换成了一个字符数组,@FrédéricLiard:-)
string json = JsonConvert.SerializeObject(log);
return Json(json, JsonRequestBehavior.AllowGet);
return Json(log);