我试图读取由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);
}
}
});
}
});
});
答案 0 :(得分:0)
datatype: 'json'
指示$.ajax()
解析响应。 result
已经是一个对象数组,而不是一个JSON字符串。您随后尝试将数组解析为字符串会导致错误。
“json”:将响应计算为JSON并返回一个JavaScript对象
注意:这个答案是从评论中拼凑而成的,因此我将其标记为社区Wiki。