Tôi có ứng dụng Sencha Touch. Một trong những cửa hàng tôi đã sử dụng một proxy ajax và một người đọc json. Một số loại dây trong JSON trở về từ ứng dụng Sinatra của tôi thỉnh thoảng chứa nhân vật này: http://www.fileformat.info/info/unicode/char/2028/index.htmCác ký tự không hợp lệ trong phản hồi JSON
Mặc dù nó là vô hình, nhân vật xuất hiện hai lần trong chuỗi thứ hai ở đây, giữa kỳ và báo giá kết thúc:
"description": "Each of the levels requires logic, skill, and brute force to crush the enemy.
"
Hãy thử sao chép và dán "Mỗi cấp độ yêu cầu logic, kỹ năng và sức mạnh vũ phu để đè bẹp kẻ thù." Vào bảng điều khiển javascript của bạn! Nó sẽ không được phân tích cú pháp dưới dạng chuỗi và không thành công với SyntaxError: Unexpected token ILLEGAL
.
Điều này làm cho phản hồi JSON thất bại. Tôi đã bị mắc kẹt trong một thời gian dài! Bất kỳ đề xuất?
Tại sao không chỉ loại bỏ các nhân vật xấu từ đầu ra JSON chuỗi trên phía máy chủ? –
@MaratTanalin Tôi đang xem xét điều đó ngay bây giờ, nhưng cho đến gần đây tôi không có quyền truy cập vào máy chủ. Tôi đoán không có giải pháp phía khách hàng? – nnyby
Nếu chuỗi là chữ JavaScript bất hợp pháp (không chắc chắn về trường hợp của bạn, nhưng, ví dụ, nguồn cấp dữ liệu không thoát hình thức không được phép trong JS literals), thì giải pháp phía máy khách không tồn tại. Mặc dù có thể bạn có thể thử nhận phản hồi JSON Ajax dưới dạng _text_ thay vì JSON, sau đó lọc ký tự không mong muốn khỏi chuỗi đó dưới dạng chuỗi và sau đó phân tích cú pháp chuỗi được lọc dưới dạng chuỗi JSON. Thật không may đó là một workaround. Nó sẽ là tốt hơn để tìm bản chất cụ thể của các ký tự bất hợp pháp trong chuỗi JSON của bạn và giải quyết lý do. –