最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

jQuery+ajax调用WCF服务步骤详解

来源:动视网 责编:小采 时间:2020-11-27 19:52:25
文档

jQuery+ajax调用WCF服务步骤详解

jQuery+ajax调用WCF服务步骤详解:这次给大家带来jQuery+ajax调用WCF服务步骤详解,jQuery+ajax调用WCF服务的注意事项有哪些,下面就是实战案例,一起来看一下。本文实例讲述了jQuery实现ajax调用WCF服务的方法。分享给大家供大家参考,具体如下:关于AJAX调用WCF服务分为跨域和不跨域
推荐度:
导读jQuery+ajax调用WCF服务步骤详解:这次给大家带来jQuery+ajax调用WCF服务步骤详解,jQuery+ajax调用WCF服务的注意事项有哪些,下面就是实战案例,一起来看一下。本文实例讲述了jQuery实现ajax调用WCF服务的方法。分享给大家供大家参考,具体如下:关于AJAX调用WCF服务分为跨域和不跨域


这次给大家带来jQuery+ajax调用WCF服务步骤详解,jQuery+ajax调用WCF服务的注意事项有哪些,下面就是实战案例,一起来看一下。

本文实例讲述了jQuery实现ajax调用WCF服务的方法。分享给大家供大家参考,具体如下:

关于AJAX调用WCF服务分为跨域和不跨域两种方式,今天咱们先介绍下不跨域下的调用方法。DEMO是在VS2008写的.

经过测试与研究,发现AJAX调用WCF服务必须满足以下条件

1.wcf的通讯方式必须使用webHttpBinding
2.必须设置<endpointBehaviors>节点的值
3.服务的实现必须添加标记

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

4.方法前面必须添加如下标记

[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]

5.ajax方法中传递的参数名称必须和wcf服务中提供的参数方法名称一致

以下是本人写的代码,标记颜色的是需要注意的地方

服务器端配置文件代码

<system.serviceModel> 
 <services> 
 <service name="WcfServiceDemoOne.Service1" behaviorConfiguration="WcfServiceDemoOne.Service1Behavior"> 
 <!-- Service Endpoints --> 
 <endpoint address="" binding="webHttpBinding" contract="WcfServiceDemoOne.IService1" behaviorConfiguration="HttpBehavior"></endpoint> 
 <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
 <host> 
 <baseAddresses> 
 <add baseAddress="http://localhost:12079/Service1.svc"/> 
 </baseAddresses> 
 </host> 
 </service> 
 </services> 
 <behaviors> 
 <serviceBehaviors> 
 <behavior name="WcfServiceDemoOne.Service1Behavior"> 
 <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点--> 
 <serviceMetadata httpGetEnabled="true"/> 
 <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息--> 
 <serviceDebug includeExceptionDetailInFaults="false"/> 
 </behavior> 
 </serviceBehaviors> 
 <endpointBehaviors> 
 <behavior name="HttpBehavior"> 
 <webHttp/> 
 </behavior> 
 </endpointBehaviors> 
 </behaviors> 
</system.serviceModel>

服务器端代码

[ServiceContract] 
 public interface IService1 
 { 
 [OperationContract] 
 string GetData(int value); 
 [OperationContract] 
 City GetDataUsingDataContract(City composite); 
 [OperationContract] 
 List<City> GetList(); 
 [OperationContract] 
 List<City> GetListData(List<City> list); 
 } 
 // 使用下面示例中说明的数据约定将复合类型添加到服务操作。 
 [DataContract] 
 public class City 
 { 
 int seq = 0; 
 string cityID; 
 string ctiyName; 
 [DataMember] 
 public string CityID 
 { 
 get 
 { 
 return cityID; 
 } 
 set 
 { 
 cityID=value; 
 } 
 } 
 [DataMember] 
 public string CityName 
 { 
 get { return ctiyName; } 
 set { ctiyName = value; } 
 } 
 [DataMember] 
 public int Seq 
 { 
 get 
 { return seq; } 
 set 
 { seq = value; } 
 } 
}

实现代码

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
 public class Service1 : IService1 
 { 
 [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
 public string GetData(int value) 
 { 
 return string.Format("You entered: {0}", value); 
 } 
 #region IService1 成员 
 [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)] 
 public City GetDataUsingDataContract(City composite) 
 { 
 City c = new City(); 
 c.CityID = composite.CityID; 
 c.CityName = composite.CityName; 
 c.Seq = composite.Seq; 
 return c; 
 } 
 [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)] 
 public List<City> GetList() 
 { 
 List<City> list = new List<City>(); 
 City cc = new City(); 
 cc.CityID = "1"; 
 cc.CityName="北京"; 
 cc.Seq = 3; 
 list.Add(cc); 
 City cc1 = new City(); 
 cc1.CityID = "2"; 
 cc1.CityName = "上海"; 
 cc1.Seq = 4; 
 list.Add(cc1); 
 return list; 
 } 
 [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)] 
 public List<City> GetListData(List<City> list) 
 { 
 return list; 
 } 
 #endregion 
}

客户端调用代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WcfServiceDemoOne.WebForm1" %> 
<!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 runat="server"> 
 <title></title> 
 <script src="jquery-1.7.1.min.js" type="text/javascript"></script> 
 <script type="text/javascript"> 
 //参数为整数的方法 
 function fn1() 
 { 
 $.ajax({ 
 url: "http://localhost:12079/Service1.svc/GetData", 
 type: "POST", 
 contentType: "text/json", 
 data: '{"value":2}', 
 dataType: "json", 
 success: function(returnValue) { 
 alert(returnValue); 
 }, 
 error: function() { 
 alert('error'); 
 } 
 }); 
 } 
//参数为实体类的方法 
 function fn2() { 
 $.ajax({ 
 url: "http://localhost:12079/Service1.svc/GetDataUsingDataContract", 
 type: "POST", 
 contentType: "application/json", 
 data: '{"CityID":1,"CityName":"北京","Seq":"3"}', 
 dataType: "json", 
 success: function(returnValue) { 
 alert(returnValue.CityID + ' ' + returnValue.CityName + "--" + returnValue.Seq); 
 }, 
 error: function() { 
 alert('error'); 
 } 
 }); 
 } 
//返回值为类集合的方法 
 function fn3() { 
 $.ajax({ 
 url: "http://localhost:12079/Service1.svc/GetList", 
 type: "POST", 
 contentType: "application/json", 
 dataType: "json", 
 success: function(returnValue) { 
 for (var i = 0; i < returnValue.length; i++) { 
 alert(returnValue[i].CityID + ' ' + returnValue[i].CityName+'---'+returnValue[i].Seq); 
 } 
 }, 
 error: function() { 
 alert('error'); 
 } 
 }); 
 } 
 function fn4() { 
 $.ajax({ 
 url: "http://localhost:12079/Service1.svc/GetListData", 
 type: "POST", 
 contentType: "application/json", 
 data: '[{"CityID":1,"CityName":"北京","Seq":"3"},{"CityID":3,"CityName":"上海","Seq":"3"}]', 
 dataType: "json", 
 success: function(returnValue) { 
 for (var i = 0; i < returnValue.length; i++) { 
 alert(returnValue[i].CityID + ' ' + returnValue[i].CityName + '---' + returnValue[i].Seq); 
 } 
 }, 
 error: function() { 
 alert('error'); 
 } 
 }); 
 } 
 </script> 
</head> 
<body> 
 <form id="form1" runat="server"> 
 <p> 
 <input id="Button1" type="button" value="调用1" onclick="fn1();" /></p> 
 <input id="Button2" type="button" value="调用2" onclick="fn2();" /> 
 <br /> 
 <input id="Button3" type="button" value="调用3" onclick="fn3();" /></form> 
 <br /> 
 <input id="Button4" type="button" value="调用4" onclick="fn4();"/> 
</body> 
</html>

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

jQuery获取页面宽高方法总结

怎样用JS+jQuery做出注册信息验证

jQuery获取radio值步骤详解

文档

jQuery+ajax调用WCF服务步骤详解

jQuery+ajax调用WCF服务步骤详解:这次给大家带来jQuery+ajax调用WCF服务步骤详解,jQuery+ajax调用WCF服务的注意事项有哪些,下面就是实战案例,一起来看一下。本文实例讲述了jQuery实现ajax调用WCF服务的方法。分享给大家供大家参考,具体如下:关于AJAX调用WCF服务分为跨域和不跨域
推荐度:
标签: 步骤 方法 请求
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top