0

我有:

<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);

为什么会出现这个错误?

4

2 回答 2

4

你写了:

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

在评论中,HtmlSpanElement是有问题的线索。显然,您的页面有 a <span>,其id与您的 hidden相同<input>,因此document.getElementById找到了错误的元素,并value返回,undefined因为 a<span>没有值。

将 的更改为id<span>通知”以外的其他内容,您的代码应该可以工作。

于 2013-07-23T19:31:50.377 回答
0

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

于 2013-07-23T19:11:36.030 回答