[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测试的更多相关文章

  1. WebService使用JSON格式传递笔记+JQuery测试

    原文WebService使用JSON格式传递笔记+JQuery测试 因为一些因素,必须改写WebService,很传统,但是很多公司还在用.. 因为XML 的关系,不想让他传递数据的时候过度肥大,所以 ...

  2. SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析

    SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析 一:问题demo展示 ...

  3. WebService返回json格式数据供苹果或者安卓程序调用

    1.新建一个WebService. 2. /// <summary> /// DemoToJson 的摘要说明 /// </summary> [WebService(Names ...

  4. Android Volley获取json格式的数据

    为了让Android能够快速地访问网络和解析通用的数据格式Google专门推出了Volley库,用于Android系统的网络传输.volley库可以方便地获取远程服务器的图片.字符串.json对象和j ...

  5. SSH返回Json格式的数据

      在开发中我们经常遇到客户端和后台数据的交互,使用比较多的就是json格式了.在这里以简单的Demo总结两种ssh返回Json格式的数据 项目目录如下 主要是看 上图选择的部分 WebRoot里面就 ...

  6. PHP接收JSON格式的数据

    在API服务中,目前流行采用json形式来交互. 给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据. ...

  7. Android读写JSON格式的数据之JsonWriter和JsonReader

    近期的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西.近期打算找一份Android的工作,要继续拾起曾经的东西.公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才開始办公 ...

  8. 中文格式python 打印json格式的数据中文显示问题

    废话就不多说了,开始... 平日会有这么一个应用场景,会用python去处置json格式的web API,以“ip.taobao.com”的API为例,详情见http://ip.taobao.com/ ...

  9. JSON(四)——异步请求中前后端使用Json格式的数据进行交互

    json格式的数据广泛应用于异步请求中前后端的数据交互,本文主要介绍几种使用场景和使用方法. 一,json格式字符串 <input type="button" id=&quo ...

随机推荐

  1. Java [Leetcode 118]Pascal's Triangle

    题目描述: Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5 ...

  2. zoj 1967 Fiber Network/poj 2570

    题意就是 给你 n个点 m条边 每条边有些公司支持 问 a点到b点的路径有哪些公司可以支持 这里是一条路径中要每段路上都要有该公司支持 才算合格的一个公司// floyd 加 位运算// 将每个字符当 ...

  3. poj 3260 The Fewest Coins

    // 转载自http://blog.163.com/benz_/blog/static/18684203020115721917109/算法不难看出,就是一个无限背包+多重背包.问题在于背包的范围.设 ...

  4. mybatis+spring+struts2框架整合

     近期公司要开发新的项目,要用struts2+mybatis+spring框架,所以学习了下,来自己的博客发表下,希望能给大家带来帮助!下边我把我的myschool开发的源代码以及数据库贴出来!  开 ...

  5. [Everyday Mathematics]20150130

    计算下列积分 $$\bex \int_0^\infty \frac{\sin^3x}{x^3}\rd x. \eex$$

  6. java web 学习一

    一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源( ...

  7. leveldb源码笔记

    关于KV数据库leveldb的介绍,网上已经太多了,这里只是自己再学习源码过程中,整理的笔记,磁盘存储和内存存储的结构用了伪代码表示出来了,首先是内存中存储结构,然后是log文件存储结构和磁盘数据ss ...

  8. SDUT 3571 Password 暴力搜索

    这个题如果裸搜肯定超时了 但是我们可以枚举,用初始串的哪一位数字去填目标串的那一位数字 这样就是暴力6!,复杂度很低,然后需要解决过程中经过的点的问题, 因为是从左向右走,所以记录当前光标, 和当前达 ...

  9. POJ2976 Dropping tests 01分数规划

    裸题 看分析请戳这里:http://blog.csdn.net/hhaile/article/details/8883652 #include<stdio.h> #include<a ...

  10. 坚持自学的第二天,bootstrap初入门

    前言 昨天,初步学完了jekyll目录结构与Liquid语法的应用与认识. 日志 今天刚入门,做了一个bootstrap导航栏,但是选中状态不行,找了JS中写好的API,写法与视频中讲的有点不一样,但 ...