• 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属性中

    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.运行截图

  • 相关阅读:
    KVC该机制
    JS多语种方式
    面试经典(1)---翻转字的顺序在一个句子
    正确Linux新手很实用20命令
    代码添加背景音乐的日记
    什么是比特币(Bitcoin)?
    李开复:该算法的重要性
    javascript推断的浏览器类型
    libyuv编
    Linux下将UTF8编码批量转换成GB2312编码的方法
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3174787.html
Copyright © 2020-2023  润新知