2009-07-24 40 views
5

Tôi có dịch vụ web trả về JSON, nhưng bây giờ tôi muốn sửa đổi nó để cho phép người gọi xác định hàm gọi lại để trả về: JSON DATA specifiedFunction (JSON DATA); Cách tôi trả về JSON ngay bây giờ chỉ bằng cách trả về một thể hiện của một đối tượng và có .NET làm phép tuần tự hóa của nó, nếu tôi thay đổi chỉ trả về một chuỗi, tôi có thể thêm tên của hàm và các dấu ngoặc xung quanh dữ liệu nhưng sau đó tôi kết thúc với dấu ngoặc kép trong sự trở lại, bởi vì một chuỗi của nó và tôi không muốn những cái đó. Vì vậy, làm thế nào tôi có thể đi về nó?Trả lại JSON được bao bọc trong chức năng gọi lại từ dịch vụ web REST WCF

Lý do cho điều này là chúng tôi muốn phát triển gọi API của chúng tôi để có thể sử dụng các thẻ script động như đã giải thích ở đây http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html

Trả lời

5

Kỹ thuật bạn sau được gọi là JSONP (JSON có đệm).

Xem How to support JSONP in WCF services:

Các JsonPEncoder là một gói encoder trên encoder WCF JSON. Nó ủy quyền hầu hết các cuộc gọi đến bộ mã hóa được bao bọc. Các phương pháp WriteMesage đã được ghi đè để đệm thông báo gửi đi bằng phương thức gọi lại. JsonBehavior được sử dụng cho hoạt động dịch vụ để bật mã hóa JSONP cho hoạt động đó . Tham số truy vấn là URI chứa tên gọi được chỉ định là thuộc tính CallBack của hành vi.

+0

Wow. Tôi đã nghe nói về JSONP, nhưng không biết nó đã gửi tên hàm gọi lại. Bất kỳ liên kết nào đến trình duyệt nào hỗ trợ cú pháp src = expression đó? –

1

Tôi không biết những gì phiên bản của HTML họ đang sử dụng, nhưng trong tất cả các phiên bản mà tôi đã sử dụng, thuộc tính src trong thẻ tập lệnh phải là một URL. Chúng bằng cách nào đó sử dụng một hàm thay vào đó, và tôi không thấy nó hoạt động.

Bạn có thực sự thấy một thẻ tập lệnh động hoạt động không?

+0

Tôi đã không sử dụng nó cá nhân nhưng theo như tôi biết nó có thể được thực hiện. Có những ví dụ về các dịch vụ web trên mạng mà tôi quay lại theo phong cách mà tôi đang theo dõi, ví dụ: http://www.geonames.org/export/JSON-webservices.html – mbehan

+0

Tôi không quan tâm đến các dịch vụ này như tôi các trình duyệt. Một người nào đó cập nhật hơn có thể sửa tôi, nhưng tôi không mong đợi bất cứ điều gì khác hơn là một URL để làm việc trong thuộc tính src. –

+0

bất kể, bất kỳ trợ giúp nào về cách định dạng lợi tức theo yêu cầu sẽ được đánh giá cao :) – mbehan

1

Tôi biết đó là một chủ đề cũ, nhưng có vẻ như tất cả mọi người khẳng định về việc thay đổi WCF để hỗ trợ JSONP khi đó là rõ ràng không phải những gì người đăng hỏi. Và tôi đã đăng ở đây và forums.asp.net và không ai dành thời gian để trả lời.

Tôi đã kết thúc trả lại dưới dạng luồng. Điều này làm cho chế độ "thô" được sử dụng và WCF sẽ không chạm vào phản hồi. Liên kết: http://blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-web.aspx.

+0

Tôi đã làm việc về vấn đề này kể từ sáng hôm qua !! Bạn và bài đăng trên blog của Carlos đã cứu tôi! Cảm ơn bạn rất nhiều!! – CodeCanuck

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