JSON.parse导致“Uncaught SyntaxError:Unexpected token u”

时间:2013-07-23 18:21:23

标签: javascript asp.net-mvc json parsing

我有:

<input type="hidden" id="notifications" value="@ViewBag.Notifications" />

当我在此行上设置断点并检查该值时,我看到该值为:

[{"id":"42647","isRead":0,"MessageType":3},{"id":"fsh3hg","isRead":0,"MessageType":2}]

我想在页面加载时解析JavaScript中的这个值,所以我写道:

var notifications = document.getElementById('notifications').value;
alert(notifications); // it prints undefined
alert(document.getElementById('notifications')); // it prints: Object HtmlSpanElement

var parsedNotifications;

if (notifications != '') {
    parsedNotifications = JSON.parse(notifications);
}

但是我在以下行中收到错误“Uncaught SyntaxError:Unexpected token u”:

parsedNotifications = JSON.parse(notifications);

为什么会出现此错误?

2 个答案:

答案 0 :(得分:4)

您写道:

alert(document.getElementById('notifications')); // it prints: Object HtmlSpanElement

在评论中,HtmlSpanElement是一个错误的线索。显然,您的网页有一个<span>,其id与您隐藏的<input>相同,因此document.getElementById会找到错误的元素,并且value会返回undefined,因为<span>没有值。

id的{​​{1}}更改为“通知”以外的其他内容,您的代码应该有效。

答案 1 :(得分:0)

所以我们知道document.getElementById('notifications')就在那里,这意味着唯一的问题是它无法找到输入值。有时外部库会阻止隐藏元素的输入。除了您向我们展示的代码之外,请删除所有内容的页面,然后尝试逐个添加其他库,直到找到问题为止。