8.WCF简化的 AJAX(*)

  • 开发步骤:
    • 添加一个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 = 50 };

        }

        [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属性中8.WCF简化的 AJAX(*)

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(*)

你可能感兴趣的:(Ajax)