废话不多说,直接讲解实现步骤

一、首先我们需定义支持WEB HTTP方法调用的WCF服务契约及实现服务契约类(重点关注各attribute),代码如下:

//IAddService.cs
namespace WcfService1
{[ServiceContract]public interface IAddService{[OperationContract][WebInvoke(Method="POST",RequestFormat=WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.WrappedRequest)]int Add(int a,int b);}
}//AddService.cs
namespace WcfService1
{[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]public class AddService : IAddService{public int Add(int a, int b){return a + b;}}
}

二、然后就是创建一个WCF服务缩主的svc文件,方法有两种:

1.在.NET FRAMEWORK 4.0以前,采用如下代码:

<!--添加一个WCF服务文件(如:AddService.svc),文件内容修改成如下:-->
<%@ ServiceHost Language="C#" Debug="true" Service="WcfService1.AddService" %><!--配置WEB.CONFIG:--><system.serviceModel><serviceHostingEnvironment multipleSiteBindingsEnabled="true" /><bindings></bindings><behaviors><serviceBehaviors><behavior><!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 --><serviceMetadata httpGetEnabled="true"/><!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --><serviceDebug includeExceptionDetailInFaults="true"/></behavior></serviceBehaviors><endpointBehaviors><behavior name="AddServiceBehavior"><enableWebScript /></behavior></endpointBehaviors></behaviors><services><service name="WcfService1.AddService"><endpoint address=""  binding="webHttpBinding" contract="WcfService1.IAddService" behaviorConfiguration="AddServiceBehavior" ></endpoint></service></services></system.serviceModel>

2.在.NET FRAMEWORK 4.0及以后,采用如下代码:(无需创建SVC文件,直接在WEB.CONFIG文件中指定一个地址,重点关注:serviceHostingEnvironment 节点)

  <system.serviceModel><bindings></bindings><behaviors><serviceBehaviors><behavior><!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 --><serviceMetadata httpGetEnabled="true"/><!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --><serviceDebug includeExceptionDetailInFaults="true"/></behavior></serviceBehaviors></behaviors><serviceHostingEnvironment aspNetCompatibilityEnabled="true"><serviceActivations><add relativeAddress="AddService.svc" service="WcfService1.AddService" factory="System.ServiceModel.Activation.WebScriptServiceHostFactory"/></serviceActivations></serviceHostingEnvironment></system.serviceModel>

创建好后,直接运行该工程,出现如下画面则表示运行成功:

三、在同工程下新增一个WEB页面(格式不限,ASPX,HTML都可以),然后实现WEB客户端调用WCF服务的代码,我这里分为两种方式来完成,一是采用原生的XMLHttpRequest来调用,二是采用jQuery.ajax来调用,其内部原理相同,在此只是为了让大家更清楚一些。

采用原生的XMLHttpRequest来调用代码如下:

        //简单封装一下:var $ = function (id) {return document.getElementById(id);};//获取原生的XMLHttpRequest对象function getXMLHTTPRequest() {var req = false;try {req = new XMLHttpRequest();} catch (err) {try {req = new ActiveXObject("Msxml2.XMLHTTP");} catch (err) {try {req = new ActiveXObject("Microsoft.XMLHTTP");} catch (err) {req = false;}}}return req;}$("btnGet").onclick = function () {var xmlhttp = getXMLHTTPRequest();xmlhttp.open("POST", "http://localhost:30348/AddService.svc/Add", true);xmlhttp.setRequestHeader("Content-type", "application/json");xmlhttp.onreadystatechange = function () {if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {var r = JSON.parse(xmlhttp.responseText);$("result").value = r.d;}};xmlhttp.send('{"a":' + $("num1").value + ',"b":' + $("num2").value + '}');}

采用jQuery.ajax来调用代码如下:

        var jq = jQuery.noConflict();jq("#btnGet").click(function () {alert("click");jq.ajax("http://localhost:30348/AddService.svc/Add", {type: "POST",//dataType: "json",contentType: "application/json",data: '{"a":' + jq("#num1").val() + ',"b":' + jq("#num2").val() + '}',//data: 'a=' + jq("#num1").val() + '&b=' + jq("#num2").val(),success: function (data) {jq("#result").val(data.d);},error: function (x, textStatus, errorThrown) {alert(textStatus);}});});

最终实现效果如下:

特别说明,以上实现只支持在同一域名下进行调用,跨域调用则会报错,下次我将分享跨域调用WCF服务的方法,敬请期待,不足之处,欢迎指出,谢谢!

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

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

    WCF实现RESETFUL架构很容易,说白了,就是使WCF能够响应HTTP请求并返回所需的资源,如果有人不知道如何实现WCF支持HTTP请求的,可参见我之前的文章<实现jquery.ajax及原 ...

  2. ajax内调用WCF服务

    WCF可以当作WebService一样被调用,在html内通过ajax调用WCF服务的方法如下: 1.新建一个WCF服务的网站项目: 2.在项目内增加一个新项:启用了ajax的WCF服务: 3.在对应 ...

  3. 接口的mime类型ajax,Ajax的原生实现关于MIME类型的使用方法

    问题描述 下面的例子是一个Ajax的post请求的代码,这段代码在测试运行的时候,发现返回的状态码为400,服务器不能理解的请求,后来经过查看和修改,发现只需要将下面的代码稍微改造一下就好了 原代码 ...

  4. 学习 WCF (6)--学习调用WCF服务的各种方法

    根据不同的情况,我们可以用不同的方法调用WCF服务,本文简单总结了一下调用WCF的一些方法(代理类,Ajax...),分享给大家.开发工具调用WCF 这中方法很方便也很简单,很多工作VS就帮我们完成了 ...

  5. SharePoint 2013 调用WCF服务简单示例

    内容比较简单,主要记录自己使用SharePoint 2013WCF服务遇到的小问题和小经验,分享给大家,希望能够给需要的人有所帮助.好吧,进入正题! 第一部分 SharePoint 2013调用自带W ...

  6. WCF 入门之旅(4): 怎样用客户端调用WCF服务

    WCF 入门之旅(4): 怎样用客户端调用WCF服务 前面的demo已经能够跑起来,现在开始考虑用客户端来测试所写的应用了,首先用个普通的应用程序来调用所写的wcf服务吧.其实最后运行wcf服务后的页 ...

  7. Silverlight同步(Synchro“.NET研究”nous)调用WCF服务

    Silverlight的RIA应用中访问远端的WebService或WCF服务,都是通过异步线程模式调用的.在某些情况下我们的调用是需要同步进行,虽然Silverlight没有内置同步线程模式调用远端 ...

  8. WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]

    原文:WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载] 我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码 ...

  9. jQuery调用WCF服务传递JSON对象

    下面这个示例使用了WCF去创建一个服务端口从而能够被ASP.Net页面通过jQuery的AJAX方法访问,我们将在客户端使用Ajax技术来 与WCF服务进行通信.这里我们仅使用jQuery去连接Web ...

最新文章

  1. 临危不乱,.Net+IIS环境经常出现的问题及排障。
  2. 神经网络RNN图解!
  3. java测试时间的类,java 测试五种单例模式需要的时间
  4. 链家前DBA判刑7年!你还敢不敢删库?
  5. 微软超融合私有云测试28-SCDPM2016部署之SCDPM基础配置(添加备份介质、推送代理)...
  6. 最小二乘法(一元)推导
  7. CSS3 之 flex
  8. shell 中的export作用(转载)
  9. android studio进度条的应用,Android Studio实现进度条效果
  10. 批处理处理当前文件路径的写法
  11. 安装杀毒软件后计算机运行速度慢,我计算机安装杀毒软件后开机启动很慢
  12. 国产13.56MHz读写器芯片Ci521替代兼容CV520
  13. Unity打包后播放视频黑屏问题
  14. 关于“访问映射网络驱动器提示 本地设备名已在使用中,此连接尚未还原”的解决方法
  15. 怎样批量修改文件名不要括号?
  16. 内部矩阵维度必须一致simulink_手把手教你将矩阵画成张量网络图
  17. 【小程序】视图与逻辑
  18. GD32F330+DS18B20
  19. STM32 OLED显示屏--SPI通信知识汇总
  20. (附源码)ssm医务志愿者管理系统 毕业设计 100910

热门文章

  1. 内外兼备的企业blog
  2. SpringBoot 中 @RestController 和 @Controller 的区别
  3. restful接口定义的几种方式
  4. node 之 redis 使用
  5. mysql replace语句
  6. 【方法整理】Oracle 获取trace跟踪文件名的几种常用方式
  7. CSS/font-size和line-height属性继承的研究
  8. 闲来无事 linux cp命令的三种实现方式
  9. .NET 2.0 泛型在实际开发中的一次小应用
  10. 运维工作钱少、事多而且杂?年轻人,你这个思想很危险吶