开始之前先定义个泛型类和数据对象类型

Code
    [DataContract]
    public class Product
    {
        [DataMember]
        public int ProductID;
        [DataMember]
        public string Name;
        [DataMember]
        public string ProductNumber;
    }
    [DataContract]
    public class PageData<T>
    {
        [DataMember]
        public int TotolRecord
        {
            get;
            set;
        }

[DataMember]
        public T Data
        {
            get;
            set;
        }
    }

方法一:

参考:

http://www.cnblogs.com/iamv/archive/2008/10/31/1323821.html

http://www.cnblogs.com/jillzhang/archive/2008/06/13/1219201.html

新建Ajax-enabled WCF Service

名字为ProductService.svc

WCF代码

Code
using System;   
using System.IO;   
using System.Runtime.Serialization;   
using System.ServiceModel;   
using System.ServiceModel.Activation;   
using System.Data.SqlClient;   
using System.Runtime.Serialization.Json;
using System.ServiceModel.Web;

namespace Josn_WCF
{
    [ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class ProductService
    {
        [OperationContract]
        public string GetProductDetailsByProductID(int productID)
        {

//随便定义一个返回的对象
            Product prod = new Product();
            int i = productID;
            prod.ProductID = i;
            prod.Name = i.ToString() + "_V";
            prod.ProductNumber = i.ToString() + "007";

MemoryStream stream = new MemoryStream();
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Product));
            serializer.WriteObject(stream, prod);
            stream.Position = 0;
            StreamReader streamReader = new StreamReader(stream);
            return streamReader.ReadToEnd();
        }
    }
}

UI调用WCF代码

新建一个aspx页面

Code
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JSON_WCF.aspx.cs" Inherits="Josn_WCF.JSON_WCF" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Invoking the Product Service through the AJAX based Client</title>

<script type="text/javascript">       
   function pageLoad() {   
   }   
   function OnGetClick() {                    
     ProductService.GetProductDetailsByProductID($get("txtProductID").value,OnGetComplete, OnError);            
   }    
   function OnGetComplete(result){    
     var prod = eval("(" + result + ")");                   
     $get("spnProductID").innerText = prod.ProductID;   
     $get("spnProductName").innerText = prod.Name;   
     $get("spnProductNumber").innerText = prod.ProductNumber;                   
   }    
   function OnError(errorMessage) {   
     alert(errorMessage.get_message());    
   }    
    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
        Enter Product ID:
        <input type="text" id="txtProductID" name="txtProductID" />
        <input type="button" value="Get Product Details" id="btnInvokeWebService" onclick="OnGetClick()" />
        <asp:ScriptManager ID="ScriptManager1" runat="server">
            <Services>
                <asp:ServiceReference Path="~/ProductService.svc" />
            </Services>
        </asp:ScriptManager>
        <br />
        <br />
        Product ID : <span id="spnProductID"></span>
        <br />
        <br />
        Name :<span id="spnProductName"></span>
        <br />
        <br />
        Product Number :<span id="spnProductNumber"></span>
        <br />
        <br />
    </div>
    </form>
</body>
</html>

主要是注意其中的JavaScript代码和ScriptManager

<asp:ScriptManager ID="ScriptManager1" runat="server">
     <Services>
          <asp:ServiceReference Path="~/ProductService.svc" />
     </Services>
</asp:ScriptManager>

转载于:https://www.cnblogs.com/iamv/archive/2008/11/06/1327941.html

调用WCF返回Josn的两种方式相关推荐

  1. Py之qrcode:调用python的qrcode库两种方式生成二维码、带logo的二维码

    Py之qrcode:调用python的qrcode库两种方式生成二维码.带logo的二维码 目录 python编程实现生成二维码 1.第一种方式-纯文本 2.第二种方式-带logo

  2. 获取Executor提交的并发执行的任务返回结果的两种方式/ExecutorCompletionService使用...

    当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取: 方式一: 通过一个list来保存一组future,然后在循环中轮训这组future,直 ...

  3. java native函数库_Java 层调用 Native 层函数的两种方式

    概述 Java 层如何调用Native层函数,大家都应该知道使用JNI(Java 本地接口). 通过在java层声明native方法,然后遵守JNI规范命名Native函数,即可建立Java层nati ...

  4. SpringMVC 返回json的两种方式

    前后台数据交互使用json是一种很重要的方式.本文主要探讨SpringMVC框架使用json传输的技术. 请注意,本文所提到的项目使用Spring 版本是4.1.7,其他版本在具体使用上可能有不一样的 ...

  5. C语言调用so动态库的两种方式

    方式1:类似静态库的调用(使用头文件) 这种方式生成的程序会在启动时候就加载so动态库. add.h int add(int x, int y); add.c #include "add.h ...

  6. Android 调用系统api录音的两种方式(MediaRecorder、AudioRecord)

    废话 权限.权限.权限,必须要先获取了录音权限,其他的事情晚点再说. 另外,新版本的Android 10系统会对录音有调整,引入了一个录音焦点的概念,也就是说以前的麦克风只能一个APP使用,必须要等它 ...

  7. web Api 返回json 的两种方式

    web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Applic ...

  8. webapi输出炜json_web Api 返回json 的两种方式

    web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Applic ...

  9. java调用wcf控件的两种交互

    1.axis方式 package wsdl.axis; import java.net.MalformedURLException; import java.rmi.RemoteException; ...

最新文章

  1. InnoDB和MyISAM区别
  2. 如何在组件模板中选择元素?
  3. 【小技巧积累】设置ListView控件的Item不在Tab键导航序列中
  4. networkX如何读取存储图的二进制.dat文件
  5. TJOI2018Party
  6. matlab习题二,matlab习题二答案.doc
  7. 打坐是开发潜能的快速方法
  8. 基于51单片机及DS18B20温度传感器数码管显示程序
  9. 逆向工程核心原理 小结
  10. 敞开心扉,一起聊聊Java多线程
  11. ESP8266-Arduino编程实例-OLED显示DHT22传感器数据
  12. maxEms和maxLength的区别以及maxEms不起作用的问题
  13. MySQL的TIMESTAMP数据类型
  14. 助力精准气象和海洋预测笔记
  15. QoS服务质量六路由器拥塞管理
  16. (免费分享)基于Springboot的个人健康监控管理系统 毕业论文+项目源码
  17. 网易云音乐的三点借鉴:功能、设计、运营
  18. Path绘制动态的贝塞尔曲线、PathMeasure来绘制path动画
  19. laravel中汉字转拼音包
  20. C++最佳实践 | 工具

热门文章

  1. mvnForum1.2.2在Eclipse中的部署
  2. Exchange企业实战技巧(15)启用向外部联系人发送邮件时的提醒
  3. PHP nl2br()格式化输出
  4. 借助 Subversion 进行版本控制
  5. 使用 WorkManager 管理后台和前台工作
  6. Android面向切面编程框架(AspectJ 讲解)
  7. android jni 返值
  8. Linux中ELF格式 可执行文件+动态链接器 的加载
  9. Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
  10. 分布式实时计算—实时计算相关问题及解决方案