2013-08-06 2 views
12

Привета я получаю эту ошибку, используя angularjs через хромированную консоль:SyntaxError: Неожиданный маркер N в хромированной консоли от angularjs

SyntaxError: Unexpected token N 
    at Object.parse (native) 
    at fromJson (http://localhost:3000/assets/angular.js?body=1:803:14) 
    at $HttpProvider.defaults.defaults.transformResponse  
http://localhost:3000/assets/angular.js?body=1:9471:18) 
    at http://localhost:3000/assets/angular.js?body=1:9446:12 
    at Array.forEach (native) 
    at forEach (http://localhost:3000/assets/angular.js?body=1:149:11) 
    at transformData (http://localhost:3000/assets/angular.js?body=1:9445:3) 
    at transformResponse (http://localhost:3000/assets/angular.js?body=1:10061:17) 
    at wrappedCallback (http://localhost:3000/assets/angular.js?body=1:7510:59) 
    at http://localhost:3000/assets/angular.js?body=1:7583:26 angular.js?body=1:6350 
(anonymous function) angular.js?body=1:6350 
(anonymous function) angular.js?body=1:5421 
wrappedCallback angular.js?body=1:7512 
(anonymous function) angular.js?body=1:7583 
Scope.$eval angular.js?body=1:8927 
Scope.$digest angular.js?body=1:8790 
Scope.$apply angular.js?body=1:9013 
done angular.js?body=1:10266 
completeRequest angular.js?body=1:10450 
xhr.onreadystatechange 

Я делаю запрос прибудет() через угловые где JSON является:

[{"_id":"51f96144c885552bda000015","company_id":"51f82116c88555bf48000004","description":"ENGINEER FOR BEST COMPANY", 
"industry_id":null,"location_city":"Pittsburgh","location_coordinates":[-79.9556424,40.4379259],"location_state":"PA","location_zip":"15213","name":"Engineer "}, 
{"_id":"51f972a5c885552bda000026","company_id":"51f82116c88555bf48000004","description":"has to do everything","industry_id":null,"location_city":"Pittsburgh","location_coordinates":[-79.9418166,40.4443735],"location_state":"PA","location_zip":"15289","name":"job #2"}] 

Кто-нибудь знает, что это значит?

+1

Как вы генерации JSON? Кажется, он искажен. – Blender

+1

выглядит как mongodb json – ryudice

+1

да, его mongodb json для моего rails app –

ответ

26

Любой SyntaxError: Unexpected token означает, что у вас есть некорректный JSON, который обычно представляет собой строку, которая не завернута в кавычки. являются только следующие supported data-types в формате JSON:

  • строка (любой текст, завернутый в кавычках)
  • массива ('Литерала массив', в [])
  • объекта ('литерал объекта', в {})
  • булевы (true или false, не завернутые в кавычках)
  • целых чисел или число (не обернуты в кавычках)
  • нуля (не обернуты в Quot эс)

В частности, SyntaxError: Unexpected token N часто является результатом случайного возвращения в вашем JSON в NaN, хотя это может быть просто какой-то другой развернутая строка. NaN не поддерживается в JSON, равно как и любой другой текст, который не заключен в кавычки, кроме true, false и null (и номера). Итак, хотя у вас действительно есть два null s в вашем примере JSON, это не должно быть проблемой. (Ваш «N» в ошибке не в нижнем регистре, как это было бы в null.)

Присутствие этой буквы «N» в ошибке заставляет меня подозревать, что вы случайно возвращающая NaN где-то в вашем JSON, даже если его нет в вашем образце. Единственный другой капитал-N, который у вас есть в вашем примере, безопасно завернут в кавычки и в любом случае находится в середине строки.

Ключ должен обеспечить правильную очистку ваших выходов на сервере и замену нуля на любые значения NaN или на перенос в кавычки и т. Д. В качестве альтернативы вы можете попытаться справиться с такими ошибками на клиенте , но это намного проще в точке происхождения, поэтому вы можете использовать условную логику, где создается контент, вместо того, чтобы использовать «грязный парсер JSON». (Это похоже на разницу между очисткой пола перед сном, пока свет еще включен, и вы знаете, где все, а не нужно обнаруживать и избегать неизвестных препятствий в темноте.)

1

Это также может быть полученные от

Notice: Undefined index: project_id in /var/www/html/ 

generated by php.

+0

Отличная точка. Или, в более общем плане, мы можем сказать, что это может быть вызвано любой неперехваченной ошибкой, которая напрямую передается в выходной поток без дезинфекции. – XML

1

У меня была та же проблема с другой буквой вместо N. После нескольких тестов я понял, что это письмо на самом деле является первой буквой строки (которая, как я думал, была преобразована в JSON), которую я отправлял! (в моем случае H для «Hello World»).

Проблема была в том, что отправленный мной JSON недействителен.(JSON - это просто строка с соответствующей ей нормой, которая позволяет распознавать ее на разных интерфейсах) Фактически, я просто отправлял строку, которая не была сериализована (помещена в правильном формате) с нормой JSON. Который, я думаю, также относится к вам. Итак, ошибка возникает из вашего back-end. Исправление зависит от того, какой бэкэнд вы используете. Я могу помочь вам, если это java!

Вы можете попробовать послать действительный JSON, заменив данные, отправленные {"id": 1, "name": "test"}, который является действительным JSON. Ваша ошибка должна исчезнуть в этом случае, и это доказывает, что ваша сериализация JSON неверна.

1

В моем случае строка json равна не в хорошем состоянии при использовании метода JSON.parse().

неформальная:

{ 
    name: "Jhon Brown", 
    age: 30, 
    motto: "Please, choose good." 
} 

произведет ошибку, как: SyntaxError: Unexpected token n at Object.parse (native)

формальному:

{ 
    "name": "Jhon Brwon", 
    "age": 30, 
    "motto": "Please, choose good." 
} 
Смежные вопросы