zoukankan      html  css  js  c++  java
  • 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.运行截图

  • 相关阅读:
    windows快捷键十八式(win10)
    解决滚动条突然出现导致的页面错位问题
    用命令行撤销工作区的所有更改(修改文件&&新增文件)
    用animation的steps属性制作帧动画
    配置Gitlab pages和Gitlab CI
    zookeeper中的分布式一致性协议
    kafka消息的处理机制(五)
    Paxos算法原理
    kafka同步异步消费和消息的偏移量(四)
    kafka客户端和服务端开发(三)
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3174787.html
Copyright © 2011-2022 走看看