Json Parse无效字符

时间:2014-07-11 17:53:19

标签: javascript jquery json ajax

我试图读取由JavaScriptSerializer Serialize .NET函数序列化的Json对象。但是我在JSON.parse中收到无效的字符错误。我错过了什么?

这是函数生成的Json字符串:

[
    {
        "Word":"areopagus",
        "Definition":"Def 1",
        "Rank":1
    },
    {
        "Word":"areopagus",
        "Definition":"Def 2",
        "Rank":2
    }
]

控制器:

[HttpGet]
public ActionResult GetWordDefinition(string word)
{
    List<vwWordDefinition> w = db.vwWordDefinitions.Where(x => x.Word == word).OrderBy(x => x.Rank).ToList();
    var json = new JavaScriptSerializer().Serialize(w);
    return new ContentResult { Content = json, ContentType = "application/json" };
}

使用Javascript:

$(function () {
    $('#btnViewDefinition').click(function () {       
        if ($('#searchString').val() != null) {
            $.ajax({
                type: "GET",
                url: '@Url.Action("GetWordDefinition", "WordList")',
                cache: false,
                data: { word: $('#searchString').val() },
                datatype: 'json',
                contentType: "application/json; charset=utf-8",
                success: function (result) {

                    var jsonData = JSON.parse(result);
                    for (var i = 0; i < jsonData.length; i++) {
                        var w = jsonData[i];
                        console.log(w.Word);
                        console.log(w.Definition);
                    }
                }
            });
        }
    });
});

1 个答案:

答案 0 :(得分:0)

datatype: 'json'指示$.ajax()解析响应。 result已经是一个对象数组,而不是一个JSON字符串。您随后尝试将数组解析为字符串会导致错误。

来自jQuery documentation

  

“json”:将响应计算为JSON并返回一个JavaScript对象

注意:这个答案是从评论中拼凑而成的,因此我将其标记为社区Wiki。