• 开发步骤:

    • 添加一个Web项目,在Web项目中新建“新建项”->"Web"->"启用了AJAX的WCF服务"
    • 页面上拖放ScriptManager控件,ScriptManager的Services属性中新增一项,Path属性设置为服务路径,比如"~/Service1.svc"
    • 调用服务端方法的时候Service1.DoWork(OnDoWorkSucceed,OnDoWorkFailed),Service1为服务类名,DoWork为方法名,OnDoWorkSucceed是调用成功时被回调的函数(Javascript中的委拖),OnDoWorkFailed是调用失败时被回调的函数。两个函数都是有一个参数result的,成功函数的result值为函数返回值,失败函数的result值为错误消息。调用都是异步的,注意这是Javascript代码!
  • 注意:“~Service1.svc”要加在ScriptManager的Services属性中,而不是Scripts属性中。如果写Javascript的时候没有自动提示,把aspx关掉再打开就行。如果还不行的话则手动写。
  • 服务端还可以返回复杂对象,JS端可以直接从result读取复杂对象的字段值。

示例:

从服务端读取获取一个人的名字。

开发步骤:

1.建立WCF服务

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text; namespace WCFAJAX
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ServicePerson
{
// 要使用 HTTP GET,请添加 [WebGet] 特性。(默认 ResponseFormat 为 WebMessageFormat.Json)
// 要创建返回 XML 的操作,
// 请添加 [WebGet(ResponseFormat=WebMessageFormat.Xml)],
// 并在操作正文中包括以下行:
// WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
[OperationContract]//记着要把这个说明符加上
public Person getperson()
{
return new Person() { Name = "当然不错了,哈哈", Age = };
}
[OperationContract]
public void DoWork()
{
// 在此处添加操作实现
return;
} // 在此处添加更多操作并使用 [OperationContract] 标记它们
} public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
}

2.点击“生成解决方案”

3.新建空白的webform,并在上放一ScriptManager,设定ScriptManager的Service属性,把刚才的服务加到其path属性中

4.在webform中放一个html中的textbox和button,点击button时会调用javascript中的函数,得到服务传过来的值并显示于客户端。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WCFAJAX.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 language="javascript" type="text/javascript">
// <![CDATA[ function Button1_onclick() {
ServicePerson.getperson(function (data) {
document.getElementById("Text1").value = data.Name;
}, function () {
document.write("获取数据失败了.");
}); } // ]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/ServicePerson.svc" />
</Services>
</asp:ScriptManager>
<div> <input id="Text1" type="text" /><input id="Button1" type="button"
value="button" onclick="return Button1_onclick()" /></div>
</form>
</body>
</html>

5.运行截图

8.WCF简化的 AJAX(*)的更多相关文章

  1. .NET运用AJAX 总结及其实例

    1.AJAX简介 (1.没有AJAX会怎么样?普通的ASP.Net每次执行服务端方法的时候都要刷新当前页面,比如实现显示服务器的时间.每次都要刷新页面的坏处:页面刷新打断用户操作.速度慢.增加服务器的 ...

  2. 微软AJAX解决方案

    -------- 微软AJAX解决方案 (*) --------ASP.Net中内置的简化AJAX开发的控件UpdatePanel 放入ScriptManager,将要实现AJAX效果的控件放到Upd ...

  3. MSDN Webcast 跟我一起从零开始学WCF系列课程

    系列课程 >跟我一起从零开始学WCF系列课程   跟我一起从零开始学WCF系列课程(1):WCF概述 (Level 200)   讲 师:徐长龙    课程简介:从 本堂课开始我们将开启一个新的 ...

  4. 【msdn】RESTful 服务(配备 WCF)介绍

    原文地址:http://msdn.microsoft.com/zh-cn/magazine/dd315413.aspx RESTful 服务(配备 WCF)介绍 Jon Flanders 代码下载位置 ...

  5. AJAX简介

    基本介绍 AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML). 国内翻译常为“阿贾克斯”和阿贾克斯足球队同音.Web应用的交互如Fli ...

  6. 初识JavaScript,Ajax,jQuery,并比较三者关系

    一.基本认识 1.JavaScript 定义: javaScript的简写形式就是JS,是由Netscape公司开发的一种脚本语言,一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态 ...

  7. jsonp与ajax

    jsonp思维导图:1.定义2.为什么用3.json原理4.优缺点何为跨域?何为JSONP?JSONP技术能实现什么?是否有必要使用JSONP技术? JSON和JSONP??虽然只有一个字母的差别,但 ...

  8. WCF再学习小结

    http://www.cnblogs.com/jillzhang/archive/2010/04/04/1704388.html http://leelei.blog.51cto.com/856755 ...

  9. JQuery(三) Ajax相关

    JQuery大大简化了Ajax通用操作,开发者只需要指定请求URL,回调函数即可. 三个主要方法: $().param(obj):将obj参数(对象或数组)转化成查询字符串. {name:" ...

随机推荐

  1. hdu2026.java字符

    首字母变大写 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  2. java 字节流与字符流的区别 (转)

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操 ...

  3. oracle用户管理实例

    oracle中的用户角色分为预定义角色和自定义角色. 角色是把常用的权限集中起来形成角色. 授权/分配角色命令 grant 权限/角色 to 用户 收回权限命令: revoke 综合案例: 创建一个用 ...

  4. linux根下目录详解及分区建议

    / 根目录    分区大小一定要充足,一般不小于5GB/bin,/usr/bin 普通用户使用命令    建议和/放一起/sbin,/usr/sbin 管理员使用命令/bin,/sbin 操作系统自身 ...

  5. maven 创建web项目

    1,新建一个web项目 2,构建基础目录 web.xml <!DOCTYPE web-app PUBLIC  "-//Sun Microsystems, Inc.//DTD Web A ...

  6. U3D 收藏一个飞机随机运动的方法

    文章转载:http://www.manew.com/thread-43578-1-1.html 前面的学习中已经涉及到了随机运动,这一篇主要还是前面的随机运动的改进,不废话直接上效果图吧,对比前面的随 ...

  7. SVN服务器的搭建 分类: 网络 2014-11-27 01:18 204人阅读 评论(4) 收藏

    一.首先来下载和安装SVN服务器 现在Subversion已经迁移到apache网站上了,下载地址: http://subversion.apache.org/packages.html 这是二进制文 ...

  8. NFC手机

    NFC手机 NFC手机内置NFC芯片,比原先仅作为标签使用的RFID更增加了数据双向传送的功能,这个进步使得其更加适合用于电子货币支付:特别是RFID所不能实现的,相互认证和动态加密以及一次性钥匙(O ...

  9. setTimeout 和 setInterval区别

    setTimeout和setIntelval都有定时的功能!!!取消定时功能的时候,都有对应的clearTimeout以及clearInterval与之对应. 但是他们之间是有区别的! setTime ...

  10. Ubuntu Server下建立VPN服务器 pptp 模式的方法

    对于想要在外部访问内部的网络,除了在防火墙上开启相应服务器所对应的端口,最好的方法应该是建立VPN-Server,使得用户可以在外网任何一台计算机上拨入到内网中进行操作,而且VPN可以记录详细的日志, ...