問題概述
通過Web Service發布服務供客戶端調用是一種非常簡單、方便、快速的手段,並且服務發布后會有一個服務說明頁面,直觀明了,如圖:

WebService返回json數據
在Visual Studio中創建WebService的過程此處不再贅述,可參考:http://blog.csdn.net/yexuanbaby/article/details/9029605
默認WebService的方法定義我們是這樣寫的:
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
這種寫法無論我們的返回值是否是json字符串,最終都會被xml包一層,不能直接作為json數據處理的,將返 回類型改為void,return部分改為如下部分:
Context.Response.Charset = "UTF-8";
Context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
Context.Response.Write(jsonStr);
Context.Response.End();
其中jsonStr是json字符串,為string類型的數據,這樣返回的數據就不再是xml格式的,直接是json數據了。
Tips:關於c#如何將對象轉為json字符串,可以使用JavaScriptSerializer 類。
服務端配置搞定跨域問題
關於如何使用Jsonp處理跨域問題,參考:http://www.cnblogs.com/lightmao/p/6083996.html
其實我們在web應用的配置文件web.config中添加以下節點就可以了,可以在Access-Control-Allow-Origin處設置允許跨域訪問的域名,*表示接受所有的跨域請求。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/>
<add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>