C#开发的WebService使用JSON格式传递数据+Ajax测试
[C#] WebService 使用 JSON 格式傳遞筆記 + JQuery 測試
0 2
因為一些因素,必須改寫WebService,很傳統,但是很多公司還在用..
因為XML 的關係,不想讓他傳遞資料的時候過度肥大,所以我必須要盡量乾淨的JSON..
於是開始我的改寫旅程..
0 2
首先,網路上好多好多好多文件,可能因為狀況不同,測試過許多也讓我搞混很多次..
最後有找到答案..筆記一下..
0 2
首先我開了三個不同的WebMethod 來測試三種不同的輸出..
0 2
GetUserInfoString –取得字串
GetOneUserInfo - 取得一個物件
GetUsers - 取得物件們
0 2
using System.Collections.Generic;
using System.Web.Script.Services;
using System.Web.Services; namespace JsonServiceSample
{ public class User
{
public string Name { get; set; }
public int Age { get; set; }
} [WebService(Namespace = "", Description = "For Donma Test")]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class Service1 : WebService
{ [WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetUserInfoString(string name, int age)
{
return name + "," + age;
} [WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public User GetOneUserInfo(string name, int age)
{
return (new User { Name = name, Age = age }); } [WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public User[] GetUsers(string name, int age)
{
List<User> res = new List<User>();
res.Add(new User { Name = name + "1", Age = age });
res.Add(new User { Name = name + "2", Age = age }); return res.ToArray();
} } }
0 2
如這篇 0 2 [C#] Web Service 移除 xmlns 0 2 我先移除xml namespace
再來一個重點,在每一個Method 上方我都會加上
0 2
0 2
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
因為基於有時候我會需要使用GET 方式傳遞 所以我在Web Config 中加入
在system.web 中加入
0 2
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost" />
<add name="Documentation" />
</protocols>
</webServices>
0 2
Web.Config 全文:
0 2
<?xml version="1.0"?> <!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
--> <configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="JsonServiceSample.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpHandlers>
</httpHandlers> <webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost" />
<add name="Documentation" />
</protocols>
</webServices>
</system.web> <applicationSettings>
<JsonServiceSample.Properties.Settings>
<setting name="JsonServiceSample_JTestService_Service1" serializeAs="String">
<value>http://localhost:5403/Service1.asmx</value>
</setting>
</JsonServiceSample.Properties.Settings>
</applicationSettings>
</configuration>
0 2
這樣試跑一下
0 2
![]()
0 2
奇怪為什麼不是JSON ,別緊張…我們繼續使用 JQuery 來呼叫看看..
0 2
JQuery Code :
0 2
0 2
<input type="button" id="ipt1" value="test" /> <script type="text/javascript">
1: 0 2
2: function GetInfo() {
3: var $res;
4: $.ajax({
5: type: "POST",
6: url: "Service1.asmx/GetOneUserInfo",
7: contentType: "application/json; charset=utf-8",
8: async: false,
9: cache: false,
10: dataType: 'json',
11: data: "{name:'當麻',age:29}",
12: success: function (data) {
13: if (data.hasOwnProperty("d")) {
14: $res = data.d;
15: }
16: else
17: $res = data;
18: }
19: });
20: return $res;
21: }
22:
23: 0 2
24: $('#ipt1').click(function () {
25: var res = GetInfo();
26: alert(res.Name);
27: });
28:
29:
</script>
按鈕按下去之後 我讓他呼叫 GetOneUserInfo 這 method
並且使用POST
看下結果..
0 2
![]()
0 2
恩恩..的確是JSON, 但是多了一個 d 0 2 跟 __type 基本上 0 2 __type 不要去動他是不影響,但是 0 2 d 這東西必須得處理..
所以我參考這一篇 : http://encosia.com/never-worry-about-asp-net-ajaxs-d-again/
進行改寫..實測過上面三種不同的回傳值..都 OK~~
0 2
這樣對於傳統的 WebService Reference 呼叫 0 2 WebService 不會有影響..
也可以透過JQuery 呼叫傳遞透過JSON…
筆記一下..給需要的人…
C#开发的WebService使用JSON格式传递数据+Ajax测试的更多相关文章
- WebService使用JSON格式传递笔记+JQuery测试
原文WebService使用JSON格式传递笔记+JQuery测试 因为一些因素,必须改写WebService,很传统,但是很多公司还在用.. 因为XML 的关系,不想让他传递数据的时候过度肥大,所以 ...
- SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析
SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析 一:问题demo展示 ...
- WebService返回json格式数据供苹果或者安卓程序调用
1.新建一个WebService. 2. /// <summary> /// DemoToJson 的摘要说明 /// </summary> [WebService(Names ...
- Android Volley获取json格式的数据
为了让Android能够快速地访问网络和解析通用的数据格式Google专门推出了Volley库,用于Android系统的网络传输.volley库可以方便地获取远程服务器的图片.字符串.json对象和j ...
- SSH返回Json格式的数据
在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了.在这里以简单的Demo总结两种ssh返回Json格式的数据 项目目录如下 主要是看 上图选择的部分 WebRoot里面就 ...
- PHP接收JSON格式的数据
在API服务中,目前流行采用json形式来交互. 给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据. ...
- Android读写JSON格式的数据之JsonWriter和JsonReader
近期的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西.近期打算找一份Android的工作,要继续拾起曾经的东西.公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才開始办公 ...
- 中文格式python 打印json格式的数据中文显示问题
废话就不多说了,开始... 平日会有这么一个应用场景,会用python去处置json格式的web API,以“ip.taobao.com”的API为例,详情见http://ip.taobao.com/ ...
- JSON(四)——异步请求中前后端使用Json格式的数据进行交互
json格式的数据广泛应用于异步请求中前后端的数据交互,本文主要介绍几种使用场景和使用方法. 一,json格式字符串 <input type="button" id=&quo ...
随机推荐
- LeetCode: Combination Sum I && II && III
Title: https://leetcode.com/problems/combination-sum/ Given a set of candidate numbers (C) and a tar ...
- 持有对象:总结JAVA中的常用容器和迭代器,随机数 速查
JAVA使用术语“Collection”来指代那些表示集合的对象,JAVA提供的接口很多,首先我们先来记住他们的层次结构: java集合框架的基本接口/类层次结构 java.util.Collecti ...
- Liunx系统学习一,liunx系统的目录结构及含义
LIUNX系统目录结构: “/” ===>这是linux文件系统的入口,也是整个linux文件系统的根目录,linux不同于windows,没有所谓的C,D,E盘,整个liunx只有一个根分区 ...
- 【转】iOS 通过xib自定义UITableViewCell【原创】
原文网址:http://blog.it985.com/9683.html 在使用tableView的时候,如果cell的布局过于复杂,通过代码搭建的话不够直观.并且要不停的调整位置,字体什么的.这时, ...
- link 参数
-all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possi ...
- 【转】从INF文件认识驱动
在工控机安装xp操作系统时,由于工控机的集成显卡驱动只支持win7,之前没接触过windows驱动相关内容,折腾了半天.下载的驱动是exe的,双击安装就提示安装失败(未签名) 上图是网上随便找的,现象 ...
- 9月5日 华为2014校园招聘的机试题目_C语言版答案
手有些生了. 题目: 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串.压缩规则:1.仅压缩连续重复出现的字符.比如 ...
- 【跟我一起学Python吧】python with statement 进阶理解
由于之前有一个项目老是要打开文件,然后用pickle.load(file),再处理...最后要关闭文件,所以觉得有点繁琐,代码也不简洁.所以向python with statement寻求解决方法.以 ...
- Echarts显示全球dns server物理位置
今天YY给了我一大串dns server的ip,然后提出将这些ip物理位置显示在世界地图上(仅仅显示每个地区有几个dns server就好),苦逼了一下午,总算告一段落.把里面关键的点贴上来以后看.. ...
- 教你利用iframe在网页中显示天气
来源:http://www.ido321.com/921.html css: 1: *{margin:0;padding:0;list-style-type:none;} 2: a,img{borde ...