2009-07-24 60 views
5

我有一個Web服務返回JSON,但現在我想修改它以允許調用者指定回調函數,以便返回從:JSON DATA到specifiedFunction(JSON DATA);我現在返回JSON的方式只是返回一個對象的實例,讓.NET執行它的序列化魔術,如果我更改爲只返回一個字符串,我可以添加函數的名稱和數據的括號,但是那麼我最後會在返回中帶有引號,因爲它是一個字符串,我不想要那些。那我該怎麼去解決呢?從WCF REST Web服務返回包裝在回調函數中的JSON

之所以這樣,是我們希望開發者調用我們的API,以便能夠使用動態腳本標記,這裏http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html

回答

5

您所使用的技術稱爲JSONP(帶填充的JSON)。

How to support JSONP in WCF services

JsonPEncoder是對WCF JSON編碼器的包裝編碼器 。它將 大部分呼叫委託給包裝好的編碼器。 WriteMesage方法已被 重寫,以用回調方法填充傳出消息 。 JsonBehavior用於服務 操作以啓用JSONP編碼爲 的操作。查詢參數 包含回調 函數名的URI被指定爲該行爲的屬性 CallBack

1

解釋我不知道他們正在使用的HTML版本,但在所有版本我已經使用過,腳本標籤中的src屬性必須是一個URL。他們以某種方式使用一個功能,而我沒有看到這個工作。

您是否真的看到過動態腳本標記工作?

+0

我沒有親自使用它,但據我所知它可以完成。有一些Web服務的例子可以用我以後的樣式返回,例如http://www.geonames.org/export/JSON-webservices.html – mbehan 2009-07-24 17:24:04

+0

我並不關心這些服務,因爲我是瀏覽器。更新的人可以糾正我,但我不希望除了URL在src屬性中工作。 – 2009-07-24 17:35:30

+0

無論如何,如何根據需要格式化返回的任何幫助將不勝感激:) – mbehan 2009-07-24 17:53:16