Javascript 正在逐个字符发送JSON响应?

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

在使用Razor和C#的MVC结构中,我试图将数据库中的数据显示到jquery数据表中。但是,我对datatable序列化和解释JSON数据的方式有一个问题

Javascript(在CSHTML页面上):

<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);