也可改用API的方式,利用MVC的架構讓程式更加簡潔明瞭。
這邊介紹webservice回傳json的方式
1.架設webservice
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允許使用 ASP.NET AJAX 從指令碼呼叫此 Web 服務,請取消註解下列一行。
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
}
運行網址: http://localhost/WebService1.asmx/+Function名稱
本例子為http://localhost/WebService1.asmx/HelloWorld,即代表架設成功!
再透過IIS將你的ASP.net架設上去別人就可以用囉~
2.回應格式
asp.net預設回傳格式為XML,我們要將他修改成JSON
這邊有兩種做法:
。透過前端網站用JQuery呼叫 (可叫出XML&JSON)
。直接編譯成JSON
這邊兩種方法都簡略介紹:D
因為有時候利用GET的方式傳遞,所以再Web Config中加入
Web.config中的 <system.web>裡面
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost" />
<add name="Documentation" />
</protocols>
</webServices>
原本的回傳格式如下圖:
我希望它顯示如下圖:
將紅框處程式修改
改成→
[WebService(Namespace = "", Description = "此 Web 服務不符合 WS-I Basic Profile v1.1")]
[System.ComponentModel.ToolboxItem(false)]
接著在每個function前面插入
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
這樣就完成囉!!在前端網站中寫jquery呼叫即可傳回JSON格式!! (連結中有附JQuery寫法)
直接調用則是呼叫XML
JSON回傳時會多一個D,相關的處理辦法在這=> 點我
若是要直接指定JSON格式我們只要直接再funtion裡面編譯他就可以了!
如下:
方法一
Context.Response.Charset = "GB2312"; //設定字串類型
Context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Context.Response.Write(new JavaScriptSerializer().Serialize(res));
Context.Response.End();
方法二:
return new JavaScriptSerializer().Serialize(res);
res為我放資料的List
方法一:主要是把XML討人厭的東西全部去掉後輸出。
方法二:return的寫法會保留XML格式的東西 ,只有內容改為JSON。
擇一選用即可~~
三種顯示畫面:
XML(預設)
XML+JSON
相關連結:
Web Service in ASP.NET (Return JSON and XML)
JavaScriptSerializer類別
[C#] WebService 使用 JSON 格式傳遞筆記 + JQuery 測試
JQuery結合JSON傳值給webservice,並接收webservice的JSON
0 意見:
張貼留言