首页 文章

JSON响应是逐个字符发送的?

提问于
浏览
1

在使用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有同样的问题需要工作):
error in json

等等每个对象 .

因此获得如此错误:

error ie10

因为当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 回答

  • 1

    更改 ParseLogChangesData 功能 . 更换:

    string json = JsonConvert.SerializeObject(log);
    return Json(json, JsonRequestBehavior.AllowGet);
    

    附:

    return Json(log);
    

相关问题