2010-05-11 24 views
5

Tôi có một số mã javascript xử lý đầu ra json từ các dịch vụ web asp.net được xây dựng bằng khung 2.0. Bây giờ tôi cần hỗ trợ dữ liệu trả về từ các dịch vụ web framework 3.5.Xóa đối tượng "d" khỏi đầu ra json dịch vụ web ASP.Net

Mã javascript của tôi giả định danh sách các đối tượng là giá trị trả về, hoạt động tốt trong 2.0. Tuy nhiên Trong khung 3.5, danh sách được bao bọc trong một đối tượng "d". Có cách nào tôi có thể loại bỏ các "d" wrapper và chỉ cần trả lại danh sách?

Tôi muốn để sửa lỗi này onthe phía máy chủ

+3

Lưu ý phụ: trình bao bọc 'd' là biện pháp bảo mật. Xem http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/#comment-34045 –

+0

liên quan: http://stackoverflow.com/questions/830112/ what-does-d-in-json-có nghĩa là –

Trả lời

5

Bạn không thể cấu 3.5+ dịch vụ không phải trả lại .d. Cũng tốt vì nó có quá, bởi vì nó bảo vệ khỏi một kịch bản hijacking JSON phức tạp tồn tại khi thực thể JSON bên ngoài là một mảng.

Proxy phía máy khách ASP.NET AJAX tự động ẩn số .d từ bạn. Nếu nó nhận được theo cách của bạn, tôi giả sử bạn đang sử dụng một cái gì đó như jQuery để gọi dịch vụ? Ví dụ: You can normalize the .d in jQuery by using its DataFilter callback.

+0

cảm ơn. Tôi sử dụng mootools. Sẽ tìm thấy một cái gì đó như thế này cho mootools hoặc cuộn của riêng tôi – Midhat

0

Vâng, nếu bạn có lợi thế thay đổi ở phía khách hàng thì cách tốt nhất là sử dụng jquery và bạn sẽ tìm thấy một tấn các giải pháp. Nhưng nếu bạn muốn loại bỏ "d" trên lớp dịch vụ cách tốt nhất là viết lại dịch vụ web của bạn trong Web Api (Bạn cũng có thể sử dụng WCF). Web Api không trả về "d" để trả lời.

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