zoukankan      html  css  js  c++  java
  • AJAX调用WCF

    1.本域内调用WCF
       a.新建“WCF服务应用程序”(注:使用的是系统自动生成的服务),服务接口加个Namespace属性,例如Namespace="http://www.ccniit.com"
       b.修改.svc文件(技巧:点击不能打开,找到相应目录,双击打开),加个属性
         Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory" 
         表示可用脚本调用WCF服务;
       c.如果使用微软的ScriptManager,则配置其services属性,地址一定要使用“~",让ScriptManager自动生成代理js脚本(这个js脚本其时
    在IE浏览中浏览.svc文件时,加个/js可自动得到),调用有点意思:
         要先生成对象 var service=new www.123.com.iservice1();//这里是用的a步骤中的服务接口名全小写;
                          service.方法调用//和ScriptManager调用.asmx完全一样;
         稍要着重注意的是调用GetDataUsingDataContract方法:
                  //调用GetDataUsingDataContract方法
                var service = new www.ccniit.com.iservice1();
                var comType = new WcfService1.CompositeType();
                comType.BoolValue = true;
                comType.StringValue = "huangbo";
                service.GetDataUsingDataContract(comType, DealRes);
                function DealRes(res) {
                    alert(res.StringValue); //StringValue是CompositeType的一个属性
                }
       d.jQuery调用示例:
                   //调用GetData方法
                   $.ajax({
                    url: "Service1.svc/GetData",//调用GetData方法
                    type: "POST",
                    dataType: "json",
                    contentType: "application/json",
                    data: '{"value":123}',//传递参数值(参数名叫value)
                    success: function (data) {
                        alert(data.d);
                    }
                   });
                   
                   //调用GetDataUsingDataContract方法
                   /*composite:参数名
                     CompositeType:参数类型
                     WcfService1:CompositeType定义的命名空间
                     BoolValue和SringValue:CompositeType中的属性*/
                   var datas = '{"composite":
    {"__type":"CompositeType:http://schemas.datacontract.org/2004/07/WcfService1","BoolValue":true,"StringValue":"huangbo"}}';
                  
                $.ajax({
                    url: "Service1.svc/GetDataUsingDataContract",
                    type: "POST",
                    dataType: "json",
                    contentType: "application/json;charset=utf-8",
                    data: datas,
                    success: function (res) {
                        alert(res.d.StringValue);
                    }
                });                    
         用Fiddler跟踪,得到的都是JSON格式;
    2.跨域调用WCF(仅限于JQuery)
      a.使用JSONP
        (1)先建立“空白网站”;
        (2)在网站中添加新项-“启用了AJAX的WCF服务",IDE地自动在Web.Config中添加一系列东西;
        (3)打开服务类,在类声明头部添加[JavascriptCallbackBehavior(UrlParameterName="jsoncallback")],
             方法定义处添加[WebGet(ResponseFormat = WebMessageFormat.Json)]
        (4)在web.config中添加Forms身份验证:<authentication mode="Forms" />(这句必须要,否则不能调用成功)
        (5)使用WCF配置管理工具,添加”绑定”,选"webHttpBinding",设定"crossDomainScriptAccessEnabled="true"
        (6)在服务的终结点定义中,设定"BindingConfiguration"为步骤(5)中设定的Binding
        (5)使用JQuery的$.getJSON方法(DoWork是要调用的方法)
             //不需要参数
             $.getJSON("http://localhost:2801/WebSite3/Service.svc/DoWork?jsoncallback=?", function (data) {
               alert(data);
             });
             //需要参数(name是参数名)
             $.getJSON("http://localhost:3115/WebSite4/Service.svc/DoWork?jsoncallback=?", { "name": "huangbo" }, function (data) 
    {
                alert(data);
            });

         这里发现使用WCF服务,并发布到IIS上,以https传输,Fiddler是无法捕捉信息的,以https提供服务,可参考:

         http://www.cnblogs.com/bearhb/archive/2012/07/02/2573236.html 

             
        
        
  • 相关阅读:
    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
    11
    实战 迁移学习 VGG19、ResNet50、InceptionV3 实践 猫狗大战 问题
    tx2系统备份与恢复
    如何在Ubuntu 18.04上安装和卸载TeamViewer
    bzoj 3732 Network (kruskal重构树)
    bzoj2152 聪聪可可 (树形dp)
    牛客 216D 消消乐 (二分图最小点覆盖)
    牛客 197E 01串
    Wannafly挑战赛23
  • 原文地址:https://www.cnblogs.com/bearhb/p/2577788.html
Copyright © 2011-2022 走看看