2013-08-06 29 views
12

Hi Tôi nhận được lỗi này bằng angularjs qua chrome console:Lỗi Cú pháp: Bất ngờ thẻ N trong chrome console từ 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 

Tôi đang làm một yêu cầu get() thông qua góc nơi json là:

[{"_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"}] 

Có ai biết điều này có nghĩa là gì không?

+1

How are you tạo ra JSON? Nó có vẻ không đúng. – Blender

+1

trông giống như mongodb json – ryudice

+1

có, mongodb json của nó cho ứng dụng đường ray của tôi –

Trả lời

26

Bất kỳ SyntaxError: Unexpected token có nghĩa là bạn đã có một số JSON không đúng định dạng, thường là một chuỗi trong đó không được bao gồm trong dấu ngoặc kép. Chỉ sau đây là supported data-types trong JSON:

  • string (bất kỳ văn bản được bọc trong dấu ngoặc kép)
  • mảng (một 'chuỗi ký tự', trong [])
  • đối tượng (một 'đối tượng' đen', trong {})
  • boolean (true hoặc false, không bọc trong dấu ngoặc kép)
  • số nguyên hoặc số (không bọc trong dấu ngoặc kép)
  • null (không bọc trong quot es)

Cụ thể, SyntaxError: Unexpected token N thường là kết quả của việc vô tình trả về NaN trong JSON của bạn, mặc dù nó có thể chỉ đơn giản là một số chuỗi chưa được mở khác. NaN không phải là giá trị được hỗ trợ trong JSON, cũng như bất kỳ văn bản nào khác không được bao gồm trong dấu ngoặc kép, ngoại trừ true, falsenull (và số). Vì vậy, mặc dù bạn thực sự có hai null s trong mẫu JSON của bạn, nó không phải là vấn đề. ('N' của bạn trong lỗi không phải là chữ thường, vì nó sẽ ở trong null.)

Sự hiện diện của chữ cái viết hoa 'N' trong lỗi khiến tôi nghi ngờ bạn vô tình quay lại một số NaN ở đâu đó trong Đầu ra JSON, mặc dù nó không có trong mẫu của bạn. Chỉ số vốn N khác mà bạn có trong mẫu của mình được bao bọc một cách an toàn trong dấu ngoặc kép và nằm ở giữa chuỗi trong mọi trường hợp.

Điều quan trọng là đảm bảo rằng bạn đang khử trùng các đầu ra của mình trên máy chủ và thay thế bằng 0 cho bất kỳ giá trị NaN nào hoặc gói trong dấu ngoặc kép, v.v. , nhưng nó dễ dàng hơn nhiều ở điểm xuất xứ, vì vậy bạn có thể sử dụng logic điều kiện nơi nội dung được tạo ra, thay vì cần sử dụng 'trình phân tích cú pháp JSON bẩn'. (Nó giống như sự khác biệt giữa việc dọn sàn trước khi giường vẫn còn sáng, và bạn biết mọi thứ ở đâu, thay vì cần phát hiện và tránh những vật cản không rõ trong bóng tối.)

1

Nó cũng có thể là kết quả của

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

được tạo bởi php.

+0

Điểm tuyệt vời. Hoặc, nói chung, chúng ta có thể nói rằng nó có thể được gây ra bởi bất kỳ lỗi vô hình được đường ống trực tiếp vào đầu ra mà không khử trùng. – XML

1

Tôi đã có cùng một vấn đề, với một chữ cái thay vì N. Sau một vài bài kiểm tra, tôi nhận ra lá thư này thực tế là chữ cái đầu tiên của chuỗi (mà tôi nghĩ đã được chuyển đổi thành JSON) mà tôi đang gửi! (trong trường hợp của tôi là H cho "Hello World").

Vấn đề là JSON tôi đã gửi không hợp lệ.(JSON chỉ là một chuỗi có chỉ tiêu liên quan đến nó cho phép nó được nhận diện trên các giao diện khác nhau) Thực tế, tôi chỉ đang gửi một chuỗi không được tuần tự hóa (đặt đúng định dạng) với chuẩn JSON. Tôi nghĩ đó cũng là trường hợp của bạn. Vì vậy, lỗi đến từ phía sau của bạn. Việc sửa chữa phụ thuộc vào chương trình phụ trợ bạn đang sử dụng. Tôi có thể giúp bạn nếu nó là java!

Bạn có thể thử gửi JSON hợp lệ thay thế dữ liệu bạn gửi theo {"id": 1, "name": "test"} là JSON hợp lệ. Lỗi của bạn sẽ biến mất trong trường hợp này và điều này chứng minh việc tuần tự hóa JSON của bạn không đúng.

1

Trong trường hợp của tôi, chuỗi json là không phải ở định dạng tốt khi sử dụng phương thức JSON.parse().

thức:

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

sẽ tạo ra lỗi như: SyntaxError: Unexpected token n at Object.parse (native)

chính thức:

{ 
    "name": "Jhon Brwon", 
    "age": 30, 
    "motto": "Please, choose good." 
} 
Các vấn đề liên quan