`
xqf222
  • 浏览: 124971 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

VS2010中使用Jquery调用Wcf服务读取数据库记录

 
阅读更多

VS2010中使用Jquery调用Wcf服务读取数据库记录

开发环境:Window Servere 2008 +SQL SERVE 2008 R2+ IIS7 +VS2010+Jquery1.3.2

功能实现: html中使用Jquery调用远程Wcf服务

优点总结:网上大部分的代码都是直接在web项目中包含SVC文件,也有的用ASPX页面来调用WCF服务,而不是HTML+Jquery+WCF+数据库模式的。

一、WCF服务调用数据库记录对应工程项目新建和代码
打开VS2010,打开“文件”菜单,点击“新建项目”,在“添加新项目”窗体左侧选择项目类型为“WCF”,点击右侧“WCF服务库”,选择顶部的NET类型为" .NET Framework4" ,下方输入名称

为“Jquery.WcfService”

点击“全部保存”按钮,弹出保存项目对话框,名称为“Jquery.WcfService”位置“C:\”,解决方案名称为“Jquery.Wcf”。

选择解决方案资源管理器中的“Jquery.WcfService”项目中的“Service1.cs”文件,点鼠右键,选择“重命名”,输入“CustomersService.cs”;

选择解决方案资源管理器中的“Jquery.WcfService”项目中的“IService1.cs”文件,按F2键,输入“ICustomersService.cs”;

选择解决方案资源管理器中的“Jquery.WcfService”项目,点鼠标右键,选择“属性”,设置“应用程序”-“目标框架”为“.NET Framework4”,弹出对话框中选择“是”。

选择解决方案资源管理器中的“Jquery.WcfService”项目,点鼠标右键,选择“添加引用”,在弹出的“添加引用”页面,选择“.NET”列表中“ System.ServiceModel.Web”项,点击“确定

”按钮。
ICustomersService.cs代码文件如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Web;

namespace Jquery.WcfService
{
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“ICustomersService”。
[ServiceContract]
public interface ICustomersService
{
[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
string GetCustomerByCustomerID(string CustomerID);
}
}

CustomersService.cs代码文件如下:

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

namespace Jquery.WcfService
{
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“CustomersService”。
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class CustomersService : ICustomersService
{
public string GetCustomerByCustomerID(string CustomerID)
{
string strReturn = "";
SqlConnection myConnection = new SqlConnection(@"Data Source=.\N3;Initial Catalog=northwnd;User ID=sa;pwd=123456;");//这里修改为您的数据库连接字符串
myConnection.Open();
SqlCommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = "select * from Customers where CustomerID='" + CustomerID + "'";
SqlDataReader myDataReader = myCommand.ExecuteReader();
while (myDataReader.Read())
{
strReturn = string.Format("CustomerID:{0} ; CompanyName:{1} ; ContactName:{2} ", myDataReader["CustomerID"], myDataReader["CompanyName"],

myDataReader["ContactName"]);
}
myDataReader.Close();
myConnection.Close();
return strReturn;
}
}
}

App.config代码文件如下
<?xml version="1.0"?>
<configuration>

<system.web>
<compilation debug="true"/>
</system.web>
<!-- 部署服务库项目时,必须将配置文件的内容添加到
主机的 app.config 文件中。System.Configuration 不支持库的配置文件。-->
<system.serviceModel>

<!-- A、服务配置 -->
<services>

<service name="Jquery.WcfService.CustomersService" behaviorConfiguration="CustomerServiceBehavior">
<endpoint address="" binding="webHttpBinding" contract="Jquery.WcfService.ICustomersService" behaviorConfiguration="CustomersEndpointBehavior">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://192.168.1.249:6089/Jquery.WcfService/CustomersService/" />
</baseAddresses>
</host>
</service>

</services>

<!-- B、行为配置 -->
<behaviors>

<!-- 1、配置服务对应的行为-->
<serviceBehaviors>

<!-- 1.1发布到远程服务器对应的行为配置 -->
<behavior name="">
<!-- 为避免泄漏元数据信息,
请在部署前将以下值设置为 false 并删除上面的元数据终结点 -->
<serviceMetadata httpGetEnabled="True"/>
<!-- 要接收故障异常详细信息以进行调试,
请将以下值设置为 true。在部署前设置为 false
以避免泄漏异常信息-->
<serviceDebug includeExceptionDetailInFaults="False"/>
<useRequestHeadersForMetadataAddress>
<defaultPorts>
<add scheme="http" port="6089" />
<add scheme="https" port="6089" />
</defaultPorts>
</useRequestHeadersForMetadataAddress>
</behavior>

<!-- 1.2服务对应的行为配置-->
<behavior name="CustomerServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>

</serviceBehaviors>

<!-- 2、添加终截节点对应的行为-->
<endpointBehaviors>
<behavior name="CustomersEndpointBehavior">
<webHttp/>
<enableWebScript/>
</behavior>
</endpointBehaviors>

</behaviors>

<!-- C、绑定配置 -->
<bindings>
<webHttpBinding>
<!-- 跨域配置 -->
<binding name="webBinding" crossDomainScriptAccessEnabled="true"></binding>
</webHttpBinding>
</bindings>

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

<!-- 大数据传送设置 -->
<standardEndpoints >
<webHttpEndpoint >
<standardEndpoint name="" maxReceivedMessageSize="3000000" defaultOutgoingResponseFormat="Json" helpEnabled="true" automaticFormatSelectionEnabled="true">
<readerQuotas maxArrayLength="300000"/>
</standardEndpoint>
</webHttpEndpoint>
</standardEndpoints>

</system.serviceModel>

<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

二、WCF服务对应测试项目新建

点击VS2010开发环境中的“文件”菜单,点击“新建项目”,添加新项目,类型为“测试”,名称为“Jquery.WcfTest”;解决方案类型为“添加到解决方案”。


选中Jquery.WcfTest项目的UnitTest1.cs文件, 点鼠标右键--选择“删除”。

选中Jquery.WcfTest项目,点鼠标右键,点“添加”,点“单元测试”,在弹出的“创建单元测试”窗体中,展开“Jquery.WcfService”项目目录树,勾

选“Jquery.WcfService.CustomersService”项,点击“确定”按钮;
双击打开Jquery.WcfTest项目中的“CustomersServiceTest.cs”文件,修改“GetCustomerByCustomerIDTest()”方法中的string CustomerID = string.Empty;为string CustomerID =

"ALFKI";
运行测试:点击VS2010开发环境中的“测试”菜单-点“运行”-“当前上下文中的测试”。

提示信息为如下:
未通过GetCustomerByCustomerIDTestJquery.WcfTestAssert.AreEqual 失败。应为: <>,实际为: <CustomerID:ALFKI ; CompanyName:Alfreds Futterkiste ; ContactName:Maria

Anders >。
证明WCF服务已经连接到数据库并能正确调用出数据库中对应的记录了。

三、用于发布WCF服务的IIS站点新建和WCF服务的发布操作步骤
新建一个站点目录C:\6089
打开IIS,找到网站节点,新建一个站点:网站名称为6089;物理路径为C:\6089;端口为6089;
打开应用程序池节点,选中6089应用程序池,双击打开编辑应用程序池设置,修改托管管道模式为"经典";设置.NET Framework版本为.NET Framework v4.0.30319.

回到VS2010开发环境中,选中Jquery.WcfService项目,点鼠标右键,选中“发布(B)”;打开发布WCF服务窗体,在目标位置输入"http://localhost:6089",点确定按钮。

回到IIS中,选择名称为“6089”的网站,点右侧下方的“内容视图”,在右侧中间点鼠标右键-“刷新”,会显示出最新的“Jquery.WcfService.CustomersService.svc”等文件,选

择“Jquery.WcfService.CustomersService.svc”文件,点鼠标右键--“浏览”,会在浏览器中打开“http://localhost:6089/Jquery.WcfService.CustomersService.svc”。正常的话,会显

示“已创建服务。”等信息。


四、新建Web站点和HTML页面,测试 Jquery调用WCF服务中的方法
点击VS2010开发环境中的“文件”菜单,点击“新建项目”,选择项目类型为“Web”,点击右侧“ASP.NET 空Web应用程序”,输入名称为“Jquery.Web”,解决方案类型为“添加到解决方案

”。

选中Jquery.Web项目,点鼠标右键,选中“添加”-“新建项”,选择项目类型为“Web”,点击右侧"HTML页",下方输入名称为“index.htm”,点击“添加”按钮。

选中Jquery.Web项目,点鼠标右键,选中“添加”-“新建文件夹”,重命名文件夹为"js"。

浏览器中打开http://code.google.com/p/jqueryjs/downloads/list网址,下载jquery-1.3.2.js文件到本地,并复制粘贴到Jquery.Web项目中的js文件夹

移动鼠标选中Jquery.Web项目中的"index.htm"页面,点鼠标右键--“设为起始页”。
index.html代码如下:
<!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>
<title>Jquery调用Wcf服务获取数据库记录</title>
<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script language="javascript" type="text/javascript">
function getCustomerInfo() {
var sendData = '{"CustomerID":"' + document.getElementById('CustomerID').value + '"}';
alert(sendData);
$.ajax({
type: 'post',
url: 'http://localhost:6089/Jquery.WcfService.CustomersService.svc/GetCustomerByCustomerID',
contentType: 'text/json',
data: sendData,
success: function (msg) {
var obj = eval('(' + msg + ')');
alert(obj.d);
}
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
CustomerID:<input type="text" id="CustomerID" value="ALFKI" />
<br />
CompanyName:<label id="CompanyName" />
<br />
ContactName:<label id="ContactName" />
<br />
<input type="button" value="获取数据库信息" onclick="getCustomerInfo();" />
</div>
</form>
</body>
</html>

按F5运行,在浏览器中会打开“http://localhost:1767/index.htm”页面,点击“获取数据库信息”按钮,会提示Jquery的发送信息和来自WCF服务的返回数据库记录信息字符串。

项目代码下载地址:http://download.csdn.net/detail/xqf222/5828217

分享到:
评论

相关推荐

    Jquery + wcf团购网程序源码

    【jQuery + WCF 团购网程序源码】是一套基于.NET MVC框架和WCF服务构建的电子商务系统,主要用于实现类似团购网站的功能。这个源码采用三层架构设计,包括表现层(Presentation Layer)、业务逻辑层(Business Logic...

    使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)

    以下是一个使用jQuery AJAX调用WCF服务GET方法的示例: ```javascript $.ajax({ type: "GET", url: "Services/EFService.svc/Members", // 这里应替换为你的实际WCF服务和方法 dataType: "json", success: ...

    EasyUI框架(ajax for WCF和Entity FrameWork4.1)

    前端页面可能使用了EasyUI的组件,如datagrid,通过ajax调用WCF服务获取和更新数据。 具体到实现步骤,开发者可能做了以下工作: 1. 定义WCF服务接口:在服务层,定义了处理数据请求和响应的方法,这些方法通常会...

    ajax调用案例

    6. **Access数据库操作**:在C#代码中,使用ADO.NET建立与Access数据库的连接,编写SQL语句来执行CRUD(创建、读取、更新、删除)操作。完成后关闭连接。 7. **Web服务接口**:这部分代码可能是C#编写的ASP.NET Web...

    使用WCF REST API和JavaScript上传文件

    4. **Ajax调用WCF服务**:使用Ajax(基于XMLHttpRequest)发起POST请求到WCF REST服务的URL。记得设置请求头的`Content-Type`和`Accept`字段,以确保服务器能正确解析请求。 5. **错误处理与进度反馈**:在...

    一个聊天程序

    使用SQL查询语句来读取和插入聊天记录。 7. **安全性**:确保聊天程序的安全性至关重要。这包括对用户输入的验证,防止SQL注入攻击;使用HTTPS协议保护通信的隐私;以及使用Session或Cookie管理用户登录状态,防止...

    ASP.NET-[其他类别]基于浏览器的简易资源管理器(源码).zip

    9. **Web API或WCF**:为了支持文件的上传和下载,可能使用了ASP.NET Web API或Windows Communication Foundation (WCF)服务,提供RESTful接口供前端调用。 10. **部署与配置**:最后,部署和配置也是开发过程中不...

    C#开发的CRM客户关系管理系统源代码

    4. **WCF(Windows Communication Foundation)或Web API**:这些是用于构建服务导向架构的Microsoft技术,用于CRM系统中的数据交换和远程调用。例如,销售人员可以通过API访问CRM系统,获取客户信息或更新销售记录...

    ASP.NET经典范例50讲附书源码

    范例可能包含如何使用Entity Framework进行ORM(对象关系映射),实现数据库的CRUD(创建、读取、更新、删除)操作,以及如何使用SQL Server或SQLite等数据库进行数据交互。 此外,ASP.NET还支持状态管理,如...

    Asp[1].net+面试题总结

    - ADO.NET:提供数据库连接、命令执行、数据读取等功能,直接操作数据库。 - Entity Framework:ORM(对象关系映射)框架,抽象数据库操作,简化数据访问,支持Code First、Database First和Model First开发模式。...

    电子购物商城系统(C#实现)

    C#是.NET框架的一部分,因此开发电子购物商城系统时,会使用.NET提供的类库和API,如ASP.NET用于构建Web应用程序,Entity Framework用于数据访问,以及Windows Communication Foundation (WCF)可能用于服务间的通信...

    10天学会asp.net教程

    你将学习如何使用Entity Framework这样的ORM(对象关系映射)工具,简化数据库操作,以及如何执行CRUD(创建、读取、更新、删除)操作。 【ASP.NET身份验证和授权】 了解如何安全地管理用户登录和权限是任何Web...

    net学习计划

    - **数据库查询**:使用LINQ to SQL进行数据库查询。 - **数据集查询**:掌握LINQ to DataSet的使用。 ##### 第三阶段:Windows Form高级编程和WPF - **Windows Form** - **MDI**:掌握多文档界面的应用开发。 ...

    ASP.NET 程序中常用的三十三种代码

    创建WCF或ASMX Web服务,实现跨域通信和API调用。 24. **AjaxControlToolkit**: 第三方库,提供许多增强的ASP.NET控件和功能。 25. **jQuery**: 在客户端,jQuery库简化了DOM操作和AJAX请求。 26. **CSS和...

    JS+WCF实现进度条实时监测数据加载量的方法详解

    例如,通过`$.ajax`方法发送POST请求,调用`LoadData`服务接口,成功回调中使用`animateProgress`方法更新进度条。 ```javascript function process_bar() { $.ajax({ type: "POST", async: true, url: "/Paper...

    asp.net初级面试题2

    3. **调用Web Service**:使用SoapHttpClientProtocol类或者WCF的ChannelFactory创建客户端代理类,然后通过代理类调用服务方法。 4. **ViewState**:ASP.NET中用于在页面间保存控件状态的机制,数据序列化后以隐藏...

    Ajax开发详解诶

    3. WinForm中的Ajax:虽然WinForm主要用于桌面应用程序,但通过WCF(Windows Communication Foundation)服务和jQuery AJAX,也可实现类似Web的异步功能。 四、Ajax的应用场景 1. 动态加载内容:如Google搜索建议...

    为ASP.NET Web API生成C#客户端API

    你可以通过命令行工具、Visual Studio扩展或集成到CI/CD流程中使用NSwag。 3. AutoRest: AutoRest是另一个强大的工具,主要用于生成Azure服务的客户端SDK,但也可以用于其他Web API。它同样从Swagger文档生成代码...

Global site tag (gtag.js) - Google Analytics