jquery或者JavaScript调用WCF服务的方法

/******************************************************************

* Copyright (C): 一心堂集团

* CLR版本: 4.0.30319.18063

* 命名空间名称: WcfService1

* 文件名: IJoonService

* GUID1: b7bd3ab3-3668-4727-9416-f9845da207e1
 创建人:尹明能

* 创建时间: 2014-9-24 13:13:09

******************************************************************/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;

namespace WcfService1
{
    //一定要取个名字,不然客户端访问不到
       [ServiceContract(Namespace = "ymn", Name = "J")]
    public interface  IJoonService
    {
       //暴漏方法,并且返回json格式数据
      [OperationContract]
     JsonResult HelloWorld();

  [OperationContract]
      string HelloWorld2();

[OperationContract]
  List<JsonResult> HelloWorld3();

    }

}

第一步,首先定义契约,创建一个接口

第二步实现接口

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text;

namespace WcfService1
{

    [AspNetCompatibilityRequirements(RequirementsMode =
        AspNetCompatibilityRequirementsMode.Allowed)]
    public class JsonWCF:IJoonService
    {
        // 要使用 HTTP GET,请添加 [WebGet] 特性。(默认 ResponseFormat 为 WebMessageFormat.Json)
        // 要创建返回 XML 的操作,
        //     请添加 [WebGet(ResponseFormat=WebMessageFormat.Xml)],
        //     并在操作正文中包括以下行:
        //         WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";

        // 在此处添加更多操作并使用 [OperationContract] 标记它们

        [WebInvoke(ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.WrappedRequest)]
       public JsonResult HelloWorld()
        {

            JsonResult jr = new JsonResult();
            jr.Address = "tt";
            jr.Name = "rrr";
            jr.Phone = "78";

               //  List<Admin> list = me.Admin.ToList();
            return jr;

        }
        public string HelloWorld2()
        {
            return "啊啊";
        }

        public List<JsonResult> HelloWorld3()
        {
            List<JsonResult> list = new List<JsonResult>();
            JsonResult jr = new JsonResult();
            jr.Address = "tt";
            jr.Name = "rrr";
            jr.Phone = "78";
            JsonResult j = new JsonResult();
            j.Address = "yy";
            j.Name = "uu";
            j.Phone = "000";

            list.Add(jr);
            list.Add(j);
            return list;
        }
    }
}

第三步另一个项目调用wcf服务,并解析json对象

 1 <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
 2
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4
 5 <html xmlns="http://www.w3.org/1999/xhtml" >
 6 <head runat="server">
 7     <title>Index</title>
 8     <script src="<%= Url.Content("~/Scripts/jquery-1.4.1.js") %>"
 9         type="text/javascript"></script>
10
11 </head>
12 <body>
13
14 <form id="form1" runat="server">
15  <div>
16
17         <br />
18         <br />
19         <input id="btnQueryDictionary" type="button" value="测试" onclick="btnQuery();" />
20         <br />
21         <br />
22      消息:  <p id="lblMsg"></p>
23     </div>
24
25 <script type="text/javascript">
26     function btnQuery() {
27
28      //非ajax请求
29        // var wcfProxy = new ymn.J();
30         // wcfProxy.HelloWorld(OnSucceededCallback, OnFailedCallback);
31
32        //ajax 请求
33         $("#lblMsg").html("");
34
35         $.ajax({
36             type: "post",
37
38             url: "http://localhost:2813/JsonWCF.svc/HelloWorld3",
39             contentType: "application/json;charset=utf-8",
40             data: "", //没有数据
41             success: function (data) {
42                 $.each(data.d, function (i, item) {
43                     $("#lblMsg").append(item.Address+"</br>");
44                 });
45             },
46             error: function (XMLHttpRequest, textStatus, errorThrown) {
47                 $("#lblMsg").html("error");
48             },
49             cache: false
50         });
51
52     }
53     function OnSucceededCallback(msg) {
54     //转换成json对象
55         var a = eval(msg);
56         $("#lblMsg").html(a.Address);
57
58 //        $.each(a, function (i, item) {
59 //            $("#lblMsg").append(
60 //               item.Address+"<br/>"
61 //
62 //            );
63 //        });
64 //
65         }
66
67     function OnFailedCallback(error, userContext, methodName) {
68         alert("异常信息:" + error.get_message() + "\n" +
69               "异常类型:" + error.get_exceptionType() + "\n" +
70               "堆栈信息:" + error.get_stackTrace());
71     }
72 </script>
73
74
75     <asp:ScriptManager ID="ScriptManager1" runat="server">
76             <Services>
77             <asp:ServiceReference Path="http://localhost:2813/JsonWCF.svc" />
78         </Services>
79     </asp:ScriptManager>
80 </form>
81
82
83 </body>
84 </html>

2009-10-22后记知道那个“d”是干嘛滴了,不过一直没有更新,为了以后复习,备注在此        [OperationContract( Name = "DoWork4" )]
        [WebInvoke(
            Method = "POST",
            BodyStyle = WebMessageBodyStyle.Wrapped,
            RequestFormat = WebMessageFormat.Json,
            ResponseFormat = WebMessageFormat.Json,
            UriTemplate = "/DoWork4" )]
        [return: MessageParameter( Name = "e" )]
        public Person DoWork4( [MessageParameter( Name = "e" )] Person e ) {
            // 在此处添加操作实现
            return new Person() { Age = 100, Name = "远始天尊" };
        }加重的两行,[return: MessageParameter( Name = "e" )]这一行影响返回JSON对象时的名称,就是传说中的"d",此时被声明为"e"了后一行        public Person DoWork4( [MessageParameter( Name = "e" )] Person e ) {这个影响的是方法接收JSON对象的参数名称,也被改为"e"了,呵呵

时间: 2024-11-29 01:05:47

jquery或者JavaScript调用WCF服务的方法的相关文章

实现jquery.ajax及原生的XMLHttpRequest跨域调用WCF服务的方法

关于ajax跨域调用WCF服务的方法很多,经过我反复的代码测试,认为如下方法是最为简便的,当然也不能说别人的方法是错误的,下面就来上代码,WCF服务定义还是延用上次的,如: namespace WcfService1 { [ServiceContract] public interface IAddService { [OperationContract] [WebInvoke(Method="GET",RequestFormat=WebMessageFormat.Json, Resp

实现jquery.ajax及原生的XMLHttpRequest调用WCF服务的方法

废话不多说,直接讲解实现步骤 一.首先我们需定义支持WEB HTTP方法调用的WCF服务契约及实现服务契约类(重点关注各attribute),代码如下: //IAddService.cs namespace WcfService1 { [ServiceContract] public interface IAddService { [OperationContract] [WebInvoke(Method="POST",RequestFormat=WebMessageFormat.Js

JavaScript调用wcf服务,并且处理返回的字典集合

1.第一步创建wcf服务的方法 using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.ServiceModel.Activation;using System.ServiceModel.Web;using System.Text; namespace WcfService1{ 

用jQuery的Ajax调用WCF服务编程心得

这两天在写基于WCF服务的后台框架,过程中遇到了一些挫折,经过努力全部解决了,在此分享给大家,使用的工具是Visual Studio 2013. 该后台需要支持通过json来传递和接收数据. 首先,说说搭建过程. 第一步:创建WCF服务应用程序项目WCF. 第二步,创建服务使用的数据类 using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Sch

实现在GET请求下调用WCF服务时传递对象(复合类型)参数

WCF实现RESETFUL架构很容易,说白了,就是使WCF能够响应HTTP请求并返回所需的资源,如果有人不知道如何实现WCF支持HTTP请求的,可参见我之前的文章<实现jquery.ajax及原生的XMLHttpRequest调用WCF服务的方法>.<实现jquery.ajax及原生的XMLHttpRequest跨域调用WCF服务的方法>,在此就不作重述. 实现WCF支持HTTP请求调用容易,但要实现类似MVC的ACTION及WEB API那样的灵活,那就得花费点功夫,为什么这样说

jquery跨域调用wcf

使用jquery跨域调用wcf服务的时候会报如下错误 1 $.ajax({ 2 url: 'http://localhost:28207/Service1.svc/GetData', 3 method: 'get', 4 dataType: 'json', 5 data: { value: val }, 6 success: function (data) { 7 $("label").text("success: " + data); 8 }, 9 error:

ajax内调用WCF服务

WCF可以当作WebService一样被调用,在html内通过ajax调用WCF服务的方法如下: 1.新建一个WCF服务的网站项目: 2.在项目内增加一个新项:启用了ajax的WCF服务: 3.在对应的XXService.svc.cs文件内增加方法.例: [OperationContract] [WebGet] public void DoWork() { // 在此处添加操作实现 return; } 4.调用方法上必须引用[OperationContract].[WebGet]特性,否则会调用

学习调用WCF服务的各种方法

1.开发工具调用WCF 这中方法很方便也很简单,很多工作VS就帮我们完成了.相信大家也不会对这种方法陌生.这里简单提一下.打开VS,在项目中添加服务引用: 在config中自动声明了有关服务的节点信息,这样VS就创建了调用服务的代理: Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->ServiceReference1.Service1Client

【原创经验分享】JQuery(Ajax)调用WCF服务

最近在学习这个WCF,由于刚开始学 不久,发现网上的一些WCF教程都比较简单,感觉功能跟WebService没什么特别大的区别,但是看网上的介绍,就说WCF比WebService牛逼多少多少,反正我刚开始入门,就没觉得多大区别啦,这次写的东西跟WebService一样,我们写了一个WCF,那当然就是要用的,要用的话,当然不能只能在.NET平台下用了,必须跨平台呀,所以,Ajax能调用,这个基本的要求就必须要实现的了,所以,本次经验分享就是写JQuery的Ajax调用WCF的服务了.   一.新建