【发布时间】:2011-08-15 01:18:58
【问题描述】:
我在使用 Jquery 解析我发回的 JSON 时遇到问题……但是,这很奇怪,因为我使用的是 MVC 的 JSON 方法。
这是我的设置。我有一个非常简单的功能:
$.ajax({
url: URLd,
dataType: 'json',
data: { Year: $('#VehicleYear').val(), Value: request.term },
success: function (data, textStatus, jqXHR) { alert("Success!"); },
error: function(XMLHttpRequest, textStatus) {
alert(textStatus + ": " + XMLHttpRequest.responseText);
}
});
它总是运行错误函数,显示:
解析器错误:[{"Value":"Toyota","ID":160}]
我不知道为什么它会这样做...... 它使用的是旧版本的 JQuery - 我读到 JQuery JSON 解析器现在更加严格了- 但我无法弄清楚我的 JSON 有什么问题。
即使是错误的,那也很令人沮丧,因为我正在使用 MVC 的 Json 函数来生成这个:
public ActionResult GetVehicleModels(int Year, int MakeID, string Value = null)
{
var modlMatchs = (from VMYX in ent.VehicleMakeYearXREFs
join VM in ent.VehicleModels
on VMYX.VehicleModelID equals VM.VehicleModelID
join VMa in ent.VehicleMakes
on VM.VehicleMakeID equals VMa.VehicleMakeID
where VMYX.ModelYear == Year && VMa.VehicleMakeID == MakeID && VM.VehicleModelName.StartsWith(Value)
orderby VMa.VehicleMakeName
select new { Value = VM.VehicleModelName, ID = VM.VehicleModelID }).Distinct().Take(10).ToList();
return this.Json(modlMatchs, "application/json", JsonRequestBehavior.AllowGet);
}
我一定遗漏了一些非常明显的东西......仍然掌握了 JQuery/MVC 的窍门,但这些东西确实减慢了我的进步。
果然,JQuery 结果如下(根据 Chrome 的开发者工具栏)
[{"Value":"Toyota","ID":160}]
【问题讨论】:
-
你能显示正在生成的确切 JSON 吗?
-
@Pekka- 如错误消息所示,但为了清楚起见,我继续添加它。
-
尝试将 dataType: 'json' 切换为 type: 'text/json'。
-
@Tejs:那没用,但是在您发表评论之前,一所大学建议“文本 json”(不带斜线),这就像一个魅力......我觉得自己像个白痴,但也很恼火这是多么的挑剔......也许我错过了它,但从文档中捕捉到它并不容易。
-
奇怪,它不应该工作,考虑到
text json不是一个有效的内容类型。但是,不要修复没有损坏的东西!
标签: asp.net-mvc json asp.net-mvc-3 jquery