Câu hỏi JSON trên IE6 (IE7)


Xin lỗi vì bệnh nhân nội trú của tôi nhưng sau vài tuần thức khuya và chỉ cần đưa trang web của tôi lên mạng, tôi không có bất kỳ năng lượng nào để gỡ lỗi ... Tôi không thể Google làm cách nào để triển khai JSON trên IE6 và IE7 ... Tôi đang sử dụng

JSON.stringify(...)

Từ những gì tôi hiểu JSON không được xây dựng trên IE6-7 và phải được tự động thêm vào trong dòng mã ... làm thế nào để bạn làm điều đó?

Tôi đã có jQuery - đó có phải là sự hiểu biết chính xác của tôi rằng công cụ JSON của họ dựa trên trình duyệt gốc của trình duyệt không?

Sau đó, một số nhận xét về mã JSON không hợp lệ khiến IE6-7 bị lỗi, nhưng tôi nghĩ nó không phải là bản địa trong IE6-7?

Bất kỳ ai?


76
2018-03-23 20:01


gốc




Các câu trả lời:


Vì bạn muốn sử dụng JSON.stringify phương pháp, bạn sẽ cần phải bao gồm Trình phân tích cú pháp JSON3 để hỗ trợ nó trên IE <8.

Thư viện này tuân thủ các phương pháp tiêu chuẩn của đặc tả ECMAScript 5th Edition và nó kiểm tra xem có sẵn bản cài đặt gốc hay không, do đó, trên trình duyệt hiện đại, việc triển khai gốc này sẽ được sử dụng.


104
2018-03-23 20:03



hoặc tôi hiểu lầm - có lẽ tôi không cần nó một cách tự động vì JSON sử dụng native browser nếu có, vì vậy nó chỉ là một <script src = "json.org/json2.js "; gõ = "text / javascript"> </ script> trong tiêu đề? - David Thorisson
@ David, bạn có thể chỉ cần bao gồm nó trong các trang của bạn, và nếu trình duyệt hỗ trợ các đối tượng toàn cầu JSON, nó sẽ không làm bất cứ điều gì, hoặc nếu bạn muốn bạn có thể bao gồm nó một cách tự động if (typeof JSON == 'undefined') - CMS
github.com/douglascrockford/JSON-js là liên kết tới trình phân tích cú pháp JSON - theJerm
Tôi muốn thêm jQuery.parseJSON (api.jquery.com/jQuery.parseJSON ) thay vì json2, vì Jquery được sử dụng ở nhiều trang web hơn. - Stefan
@Stefan jQuery không làm stringify mặc dù, nó chỉ phân tích cú pháp, đó là khác nhau - Benjamin Gruenbaum


Phải có điều gì đó bị hiểu lầm. Các ký hiệu đối tượng đã được trong JavaScript trong một thời bây giờ (theo như tôi hiểu, đó là một khái niệm cốt lõi của JavaScript). Ý tôi là, khả năng viết mã như var o= {a:"b"};
Vì vậy, nếu bạn có thể làm điều này, bạn cũng có thể gọi eval('var o= {a:"b"};') và đó là cách bạn "triển khai JSON" trong bất kỳ trình duyệt nào.

CẬP NHẬT: Đọc lại bài đăng của bạn và cuối cùng đã nhận ra rằng vấn đề đang sắp xếp các đối tượng, chứ không phải deserializing chúng. Sau đó, bạn có thể sử dụng thư viện JavaScript cho điều đó: https://github.com/douglascrockford/JSON-js/blob/master/json2.js


2
2018-03-23 20:05



emm ... tại sao eval ()? - David Thorisson
@ David, tôi nghĩ đó là lựa chọn duy nhất bạn có nếu bạn nhận dữ liệu JSON từ một số nguồn dữ liệu bên ngoài. Phải không? - naivists
Tôi hơi sợ xâu chuỗi thủ công - một nguồn lỗi có thể xảy ra ... - David Thorisson
Đánh giá là tùy chọn tồi tệ nhất nếu bạn muốn tải dữ liệu từ một nguồn dữ liệu ngoài, nó sẽ mở ra cho bạn các cuộc tấn công tiêm script. Nếu bạn cần JSON đối tượng tương thích json2.js là con đường để đi. - mikerobi
mikerobi, cảm ơn cho bình luận (nhưng không phải cho downvote). Được cảnh báo rằng json2.js gọi eval nội bộ là tốt (xem github.com/douglascrockford/JSON-js/blob/master/json2.js#L471 Mặc dù Crockford tuyên bố rằng nó bị ngăn cản thi hành, tôi vẫn tin rằng có thể có một cách để vượt qua nó. - naivists


Chỉ cần bao gồm json2.js trong tệp của bạn để chơi với JSON. Nó cũng sẽ hoạt động trong IE 9.


2
2017-07-09 09:55





"tự động thêm mã nội tuyến" đang sử dụng chức năng được cung cấp bởi thư viện Douglas Crockfords json2 hoặc thực thi của jQuery nếu phiên bản trình duyệt không hỗ trợ nguyên bản.

jQuery không dựa vào bất kỳ chức năng giải mã JSON nào được cung cấp bởi trình duyệt. Nếu trình duyệt hỗ trợ giải mã JSON, thì jQuery sẽ sử dụng nó.


1
2018-03-23 20:11



ok bằng cách sử dụng jQuery sẽ là tuyệt vời kể từ khi nó đã được bao gồm, nhưng tại sao sau đó không JSON.stringify (...) làm việc trên IE6-7, là có một số cú pháp đặc biệt cho jQuery JSON? - David Thorisson
JSON.stringify hoạt động trên IE6-7, miễn là bạn đã thêm tập lệnh: \ - Matt
jQuery JSON hoạt động như sau: jquery.parseJSON(str) - Matt
Trong IE7, tôi nhận được: SCRIPT5009: 'JSON' là không xác định jquery-1.8.0.min.js, dòng 2 ký tự 16953 khi sử dụng phương pháp này và không bao gồm thư viện JSON. - Anders Branderud
@AndersBranderud: Không phải là trường hợp. jQuery rõ ràng cung cấp một dự phòng. Nếu bạn có thể tái tạo hành vi này trong phiên bản mới nhất của jQuery (1.9.0b), tôi sẽ xem xét nộp một lỗi. - Matt