2008-08-22 29 views
5

Tôi có một tập lệnh truy xuất các đối tượng từ một máy chủ từ xa thông qua một cuộc gọi Ajax. Máy chủ trả về các đối tượng theo ký hiệu JSON.Adobe AIR: Xử lý các đối tượng JSON từ máy chủ

Tuy nhiên, trong Adobe AIR, có hạn chế sử dụng eval() vì lý do bảo mật. Vì vậy, tôi có thể nhận được trả lời từ máy chủ từ xa, nhưng không thể chuyển chúng trở lại đối tượng JavaScript. Có cách giải quyết nào cho vấn đề này không? Tôi muốn sử dụng JSON cho các đối tượng JavaScript của mình, vì nó có thể được sử dụng gần như ngay lập tức.

Lưu ý phụ: Tôi hiểu ý nghĩa bảo mật của việc ép buộc vấn đề, nhưng tôi sẽ thực hiện một số phát triển ứng dụng nhanh cho cuộc thi, vì vậy chương trình sẽ chỉ là mẫu thử nhanh và không được sử dụng cho mục đích sản xuất. Tuy nhiên, nó sẽ là tuyệt vời nếu có một sự thay thế tốt hơn với những gì tôi đang cố gắng để làm gì bây giờ


Cập nhật:

Nhờ Theojsight cho câu trả lời của họ;

Điều quan trọng mà tôi đã học hôm nay là tôi có thể sử dụng thư viện ActionScript bằng cách sử dụng thẻ

<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
được Adobe AIR mở rộng. Kiểm tra liên kết Theo's để biết thêm chi tiết!

Trả lời

2

Bạn đã xem as3corelib chưa? Dường như nó cung cấp một trình phân tích cú pháp AS3 cho dữ liệu JSON, và hy vọng của tôi là nó không dựa vào eval (eval có xu hướng xấu cho an ninh như bạn đã lưu ý). Cũng có các lib tương tự cho Javascript và chúng có xu hướng là cách ưa thích để phân tích cú pháp json do các tác động bảo mật của việc gọi eval (dữ liệu có khả năng) dữ liệu xấu.

0

JSON là ký hiệu đối tượng Javascript, vì vậy nếu bạn đang sử dụng Javascript, bạn đã có sẵn! Hãy nhìn vào những liên kết này, họ đưa ra ví dụ về cách tạo các đối tượng Javascript từ JSON:

http://www.hunlock.com/blogs/Mastering_JSON_(_JavaScript_Object_Notation_)

http://betterexplained.com/articles/using-json-to-exchange-data/

Nếu bạn quyết định đi con đường Flex/AS3, sau đó là jsight nói , as3corelib là một nơi tốt để bắt đầu.

0

Tôi nghĩ rằng điều này là có thể nếu bạn sử dụng một iframe và cầu hộp cát. Bạn sẽ có thể chạy eval() trên mã được tải xuống trong iframe có hộp cát,

Trích từ Adobe AIR 1.1 Doc's "... có thể thuận tiện hơn khi chạy nội dung trong khung con bằng sandbox để nội dung có thể chạy không hạn chế về eval() ..."

một bài viết có liên quan: Building on AIR: Working with the Sandbox Bridges

3

Việc phát hành AIR hiện tại (v2.5) bó một WebKit mới hơn có hỗ trợ JSON bản xứ, qua JSON.stringify() và JSON .parse().

Các vấn đề liên quan