2013-07-23 2 views
0

у меня есть:JSON.parse вызывает «неперехваченный SyntaxError: Неожиданный маркер и»

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

, но я получаю сообщение об ошибке «неперехваченный SyntaxError: U не указана токен u "по следующей строке:

parsedNotifications = JSON.parse(notifications); 

Зачем возникает эта ошибка?

+0

'undefined' недействителен JSON. Что такое сгенерированный источник? – SLaks

+0

это список классов. –

+0

Значение не выводится правильно. вот скрипка со значением правильная и работает: http://jsfiddle.net/A5Kf7/ –

ответ

4

Вы писали:

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

В комментарии, HtmlSpanElement является признаком того, что что-то не так. Судя по всему, ваша страница имеет <span> которого id является же, что и ваши скрытые <input>, так document.getElementById находит неправильный элемент и возвращает valueundefined, потому что <span> не имеет значения.

Измените id<span> на что-то другое, кроме «уведомлений», и ваш код должен работать.

0

Таким образом, мы знаем, что document.getElementById («уведомления») есть, что означает, что единственная проблема заключается в том, что он не может найти входное значение. Иногда внешние библиотеки блокируют ввод скрытых элементов. Разделите свою страницу обо всем, кроме кода, который вы нам показали, а затем попробуйте добавить в другие библиотеки, которые вы включили один за другим, пока не найдете проблему.

Смежные вопросы