原文WebService使用JSON格式传递笔记+JQuery测试

  • 因为一些因素,必须改写WebService,很传统,但是很多公司还在用.. 因为XML 的关系,不想让他传递数据的时候过度肥大,所以我必须要尽量干净的JSON.. 于是开始我的改写旅程..   首先,网络上好多好多好多文件,可能因为状况不同,测试过许多也让我搞混很多次.. 最后有找到答案..笔记一下..   首先我开了三个不同的WebMethod 来测试三种不同的输出..   GetUserInfoString –取得字符串 GetOneUserInfo - 取得一个对象 GetUsers - 取得对象们

    01.using System.Collections.Generic;
    02.using System.Web.Script.Services;
    03.using System.Web.Services;
    04. 
    05.namespace JsonServiceSample
    06.{
    07. 
    08.public class User
    09.{
    10.public string Name { getset; }
    11.public int Age { getset; }
    12.}
    13. 
    14. 
    15.[WebService(Namespace = "", Description = "For Donma Test")]
    16.[System.ComponentModel.ToolboxItem(false)]
    17.[ScriptService]
    18.public class Service1 : WebService
    19.{
    20. 
    21. 
    22.[WebMethod]
    23.[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    24.public string GetUserInfoString(string name, int age)
    25.{
    26.return name + "," + age;
    27.}
    28. 
    29. 
    30.[WebMethod]
    31.[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    32.public User GetOneUserInfo(string name, int age)
    33.{
    34.return (new User { Name = name, Age = age });
    35. 
    36.}
    37. 
    38. 
    39.[WebMethod]
    40.[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    41.public User[] GetUsers(string name, int age)
    42.{
    43.List<User> res = new List<User>();
    44.res.Add(new User { Name = name + "1", Age = age });
    45.res.Add(new User { Name = name + "2", Age = age });
    46. 
    47.return res.ToArray();
    48.}
    49. 
    50.}
    51.}

    再来一个重点,在每一个Method 上方我都会加上www.it165.net

    [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)]

    因为基于有时候我会需要使用GET 方式传递 所以我在Web Config 中加入 在system.web 中加入

    <webServices> <protocols> <add name="HttpGet"/> <add  name="HttpPost" /> <add name="Documentation" /> </protocols> </webServices>   Web.Config 全文:

    01.<?xml version="1.0"?>
    02. 
    03.<!--
    04.For more information on how to configure your <a href="http://www.it165.net/pro/webasp/" target="_blank" class="keylink">ASP</a>.NET application, please visit
    06.-->
    07. 
    08.<configuration>
    09.<configSections>
    10.<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
    11.<section name="JsonServiceSample.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    12.</sectionGroup>
    13.</configSections>
    14.<system.web>
    15.<compilation debug="true" targetFramework="4.0" />
    16.<httpHandlers>
    17.</httpHandlers>
    18. 
    19.<webServices>
    20.<protocols>
    21.<add name="HttpGet"/>
    22.<add  name="HttpPost" />
    23.<add name="Documentation" />
    24.</protocols>
    25.</webServices>
    26.</system.web>
    27. 
    28.<applicationSettings>
    29.<JsonServiceSample.Properties.Settings>
    30.<setting name="JsonServiceSample_JTestService_Service1" serializeAs="String">
    31.<value>http://localhost:5403/Service1.asmx</value>
    32.</setting>
    33.</JsonServiceSample.Properties.Settings>
    34.</applicationSettings>
    35.</configuration>

    这样试跑一下

    奇怪为什么不是JSON ,别紧张…我们继续使用 JQuery 来呼叫看看.. JQuery Code :

    01.<input type="button" id="ipt1" value="test" />
    02. 
    03.<script type="text/javascript">
    04. 
    05.function GetInfo() {
    06.var $res;
    07.$.ajax({
    08.type: "POST",
    09.url: "Service1.asmx/GetOneUserInfo",
    10.contentType: "application/json; charset=utf-8",
    11.async: false,
    12.cache: false,
    13.dataType: 'json',
    14.data: "{name:'当麻',age:29}",
    15.success: function (data) {
    16.if (data.hasOwnProperty("d")) {
    17.$res = data.d;
    18.}
    19.else
    20.$res = data;
    21.}
    22.});
    23.return $res;
    24.}
    25. 
    26. 
    27.$('#ipt1').click(function () {
    28.var res = GetInfo();
    29.alert(res.Name);
    30.});
    31. 
    32. 
    33.</script>

    按钮按下去之后 我让他呼叫 GetOneUserInfo 这 method 并且使用POST 看下结果..

    恩恩..的确是JSON, 但是多了一个 d  跟 __type 基本上  __type 不要去动他是不影响,但是  d 这东西必须得处理.. 进行改写..实测过上面三种不同的回传值..都 OK~~ 这样对于传统的 WebService Reference 呼叫  WebService 不会有影响.. 也可以透过JQuery 呼叫传递透过JSON…

WebService使用JSON格式传递笔记+JQuery测试的更多相关文章

  1. C#开发的WebService使用JSON格式传递数据+Ajax测试

    [C#]  WebService 使用 JSON 格式傳遞筆記 + JQuery 測試 0 2 因為一些因素,必須改寫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. Java Servlet生成JSON格式数据并用jQuery显示

    1.Servlet通过json-lib生成JSON格式的数据 import java.io.IOException;import java.io.PrintWriter;import java.uti ...

  5. jquery json 格式教程

    介绍 我们知道AJAX技术能够使得每一次请求更加迅捷,对于每一次请求返回的不是整个页面,也仅仅是所需要返回的数据.通常AJAX通过返回XML格式的数据,然后再通过客户端复杂的JavaScript脚本解 ...

  6. Ajax datatype:'JSON'的error问题Status1:200,JSON格式

    转自:http://blog.sina.com.cn/s/blog_6e001be701017rux.html <script src="../js/jquery-1.8.0-vsdo ...

  7. ASP.net jQuery调用webservice返回json数据的一些问题

    之前寒假时,试着使用jQuery写了几个异步请求demo, 但是那样是使用的webform普通页面,一般应该是用 webservice 居多. 最近写后台管理时,想用异步来实现一些信息的展示和修改, ...

  8. jquery ajax调用返回json格式数据处理

    Ajax请求默认的都是异步的 如果想同步 async设置为false就可以(默认是true) var html = $.ajax({ url: "some.php", async: ...

  9. jQuery中使用Ajax获取JSON格式数据示例代码

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSONM文件中包含了关于“名称”和“值”的信息.有时候我们需要读取JSON格式的数据文件,在jQuery中 ...

随机推荐

  1. 微服务API Gateway

    翻译-微服务API Gateway 原文地址:http://microservices.io/patterns/apigateway.html,以下是使用google翻译对原文的翻译. 让我们想象一下 ...

  2. 如何对 GIT 分支进行规划? (转)

    项目背景: 该项目是在2011年11月份使用Asp.net三层帮荷兰某个客户开发的机票预定系统 该客户主要是做中国与欧洲的旅行社业务,特别是最近两年由于中国的发展因此客户也越来越重视机票业务 于是他们 ...

  3. [SignalR]配置路由

    原文:[SignalR]配置路由 注册路由,在代码如下(SignalR 1.*): 脚本修改如下: 但是其官方文档解释是: By default, the route URL which client ...

  4. CentOS7 安装NFS SSH免密码登陆

    配置5台虚拟机 ip为192.168.1.160 - 164,使用160作为共享服务器 使用yum安装nfs 以及rpcbind,有很多文章介绍,这里不再赘述 一.启动服务 1.启动rpcbind s ...

  5. c# webbrowser  获取用户选中文字

    原文:c# webbrowser  获取用户选中文字 最近一直被一个问题困扰,有一个文本框,一个webbrowser控件,一个上下文菜单, webbrowser  获取用户选中文字" tit ...

  6. Linux/UNIX先进I/O

    先进I/O 非阻塞IO 非阻塞I/O因此,我们可以称之为open.read和write这种I/O操作,而这些操作不会永久阻止.我们假设,该操作不能完成,然后调用立即返回一个错误.则表示该操作将继续作为 ...

  7. C编程的指针涛 ---第十笔记

    //指针实例搜索算法 //迷宫算法 //搜索是最长的使用深度优先搜索和广度优先搜索 //作为名称作为一个深度优先搜索,每路一直在寻找到底. //为了防止想法,这样的数据结构 //使得每次找到思路的时候 ...

  8. FPGA 设计流程,延迟,时间

    FPGA 设计流程,延迟,时间 流程:每个时钟周期可以传输的数据比特. 延迟:从输入到时钟周期的输出数据需要经验. 时间:两个元件之间的最大延迟,最高时钟速度. 1 採用流水线能够提高 流量: 比如计 ...

  9. poj 1328 Radar Installation (简单的贪心)

    Radar Installation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 42925   Accepted: 94 ...

  10. bigdata_spark_源码修改_本地环境搭建_eclise

    Eclipse 下开发调试环境的配置该小节中使用的各项工具分别为:mac (Windows 7)+Eclipse Java EE 4.4.2+Scala 2.10.4+Sbt 0.13.8+Maven ...