• ASP.NET AJAX(2)__ASP.NET 2.0 AJAX Extensions


    ASP.NET 2.0 AJAX Extensions为我们提供的主要功能如下

    序列化和反序列化

    客户端访问Web Service方法

    服务器端AJAX控件

    _____ScriptManager

    _____UpdatePanel

    _____Extender

    微软的ASP.NET AJAX有一点非常让人感觉神奇的一点,也算是他宣传的一个鳌头,说的是,所有的ASP.NET程序员,不用写任何javascript代码就可以实现AJAX,那么UpdatePanel呢,就是说着话的资本,我们也知道,几乎所有的服务端控件,只要简单的把它嵌套在UpdatePanel里,然后做一些简单的设置,就可以实现为一个AJAX效果,但是,这样也就很容易造成一个AJAX的滥用,我们知道,AJAX的特点嫩,就是提高用户体验,减少了客户端和服务器端之间的数据访问,而使用UpdatePanel,实际上并没有减少发送给服务器端的数据量,相反,它增加了一些他需要的数据,这也使UpdatePanel经常变成一个性能杀手,所以我们在使用中一定要做到合理使用,当然啦,要做一个好的AJAX应用,不写JAVASCRIPT代码是不可能的,其实我以下的文章里,或者我们的实际应用里将会写大量的javascript代码,也幸亏吧,VS给我们提供和功能强大的代码提示功能,减少了错误率,也同时让我们变懒了很多,反正任何东西也是有两面性的,小白作为一个IT界的菜鸟,就不多做评价啦,一句话,这个代码提示功能,让我不敢爱却不得不爱,闲话少说,书归正传。。。。。。

    首先写一个客户端访问Web Service的Demo

    1创建一个VehicleService.asmx(Web服务):

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using System.Web.Script.Services;
    
    /// <summary>
    ///VehicleService 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 
    [System.Web.Script.Services.ScriptService]
    public class VehicleService : System.Web.Services.WebService 
    {
        [WebMethod]
        [ScriptMethod]
        public Vehicle GetVehicle(string name,string fullSpeed,string weight)
        {
            return new Vehicle(name, Int32.Parse(fullSpeed), float.Parse(weight));
        }
    }

    这里需要注意的是,一定要在类之前家上一个ScriptService标记,在需要调用的方法前ScriptMethod标记,这样才可以保证方法在客户端可以调用

    2.在要调用webservice的页面中加入ScriptManager控件,并在ScriptManager中注册这个Webservice:

    <asp:ScriptManager ID="ScriptManager1" runat="server">
                <Services>
                    <asp:ServiceReference Path="~/Demo01/VehicleService.asmx" />
                </Services>
            </asp:ScriptManager>

    这样就可以在客户端生成一些脚本代理,方便我们调用

    3然后加入脚本代码,和调用方法的按钮

    <script language="javascript" type="text/javascript">
                function realizeVehicle(name, fullSpeed, myWeight) {
                    VehicleService.GetVehicle(name, fullSpeed, myWeight, onSuccess);
                }
    
                function onSuccess(vehicle) {
                   
                    $get("text").innerHTML = String.format("This {0}'s full speed is {1} km/h.and this truck can load {2} kg heavy.", vehicle.Name, vehicle.FullSpeed,vehicle.Weight);
                }
            </script>
            
            <input type="button" value="FAW" onclick="realizeVehicle('FAW',150,30000);" />
     

    在调用WebService时,在基础参数后,还需要添加一个回调函数,实际上,不只是一个回调函数,这个以后将会写到,这里先留一扣子吧

    和调用一般处理程序不同的是,这里,我们就可以使用拿到的对象了,而不需要对它进行反序列化,实际上,它已经自动反序列化啦

    好了,运行看看效果吧

    小白   xiaoyaojian@126.com

  • 相关阅读:
    ThinkPHP3.1快速入门(12)自动验证
    ThinkPHP CURD方法盘点:page方法
    ThinkPHP CURD方法盘点:table方法
    ThinkPHP CURD方法盘点:order方法
    ThinkPHP CURD方法盘点:data方法
    openssl安装问题导致nginx添加ssl模块失败
    rsync介绍
    基于CRF序列标注的中文依存句法分析器的Java实现
    千万级巨型汉语词库分享
    几个开源分词系统所使用标注集的来源
  • 原文地址:https://www.cnblogs.com/xiaoyaojian/p/2210898.html
Copyright © 2020-2023  润新知