运用WCF来简化Ajax代码

一般的ajax程序是HTML+ASHX,要写很多通信代码,但是微软的WCF集成了通信代码,简化了代码.

1,新建一个WCF服务器页面,新建一个给客户端使用的方法,及数据类.

using System;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;

namespace WebApplication1
{
    [ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class WCFService1
    {
        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="id">用户id</param>
        /// <returns>存放用户信息的用户类</returns>
        [OperationContract]
        public user GetUser(int id) {
            return new user() {username="小江",age=22,address="浙江温州" };        
        }
        // 添加 [WebGet] 属性以使用 HTTP GET
        [OperationContract]
        public void DoWork()
        {
            // 在此处添加操作实现
            return;
        }

        // 在此处添加更多操作并使用 [OperationContract] 标记它们
    }
    /// <summary>
    /// 定义用户类,存放用户数据
    /// </summary>
    public class user
    {
        public string username { get; set; }
        public int age { get; set; }
        public string address { get; set; }
    }
}


 

2,添加一个aspx页面,在页面顶部添加一个ScriptManager控件,在这个控件的数据集里添加服务器页面进来,

最后写js代码,直接像写C#程序一样写js代码,很方便.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WCFAjax.aspx.cs" Inherits="WebApplication1.WCFAjax" %>

<!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>
    <style type="text/css">

        #Text3
        {
            height: 50px;
            width: 181px;
        }
    </style>
    <script type="text/javascript">
        function $(id) { return document.getElementById(id); }

        function Button1_onclick() {
            WCFService1.GetUser(1, function(data) {//调用服务器Getuser(id,fn,fn)方法,第一个为参数,第二个为返回成功的匿名函数,第三个为返回失败的匿名函数
            $("Text1").value = data.username;
            $("Text2").value = data.age;
            $("Text3").value = data.address;
            }, function() { alert("获取失败"); });
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    <p>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
            <Services>
                <asp:ServiceReference Path="~/WCFService1.svc" />
            </Services>
        </asp:ScriptManager>
        用户名<input id="Text1" type="text" /></p>
    <p>
        年龄<input id="Text2" type="text" /></p>
    <p>
        地址<input id="Text3" type="text" /></p>
    <p>
        <input id="Button1" type="button" value="button" οnclick="return Button1_onclick()" /></p>

    </div>
    </form>
</body>
</html>


 


发布了29 篇原创文章 · 获赞 0 · 访问量 18万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章