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 

             
        
        
  • 相关阅读:
    React组件-初识React1(慕课)
    高德地图
    js 格式化数字,数字每隔三位加个逗号
    css样式(格子、液晶字体)
    Echart
    css 渐变
    RAP的使用方法
    重新排序数组中的对象(根据对象中的某个属性来排列)
    EF context.SaveChanges()特点
    EF 导航属性的使用
  • 原文地址:https://www.cnblogs.com/bearhb/p/2577788.html
Copyright © 2011-2022 走看看