Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >ASP.NET AJAX(1)__Microsoft AJAX LibraryASP.NET AJAX(1)__Microsoft AJAX Library

ASP.NET AJAX(1)__Microsoft AJAX LibraryASP.NET AJAX(1)__Microsoft AJAX Library

作者头像
小白哥哥
发布于 2018-03-07 06:59:10
发布于 2018-03-07 06:59:10
1.2K00
代码可运行
举报
文章被收录于专栏:技术小讲堂技术小讲堂
运行总次数:0
代码可运行

ASP.NET AJAX(1)__Microsoft AJAX Library

Microsoft AJAX Library为我们提供的客户端框架,提供的内容大概可以概括为以下的几种:

javascript基础扩展 浏览器兼容层 面向对象类型系统 客户端基础类库 异步通信层

       Microsoft AJAX Library为我们提供了javascript基础扩展,一些在javascript类型中没有但是会经常用到的一种方法,方便了我们的开发,然后它还提供了浏览器兼容层,通常,我们使用javascript开发的时候,我们经常会遇到浏览器不兼容的情况,而要做到浏览器的兼容,我们就不得不了解各种常用浏览器对javascript支持的差异,也不得不在各种浏览器里去调试代码,甚至于写不同的javascript代码来对各种浏览器进行支持,这很明显是一件费时费力的工作,但是Microsoft AJAX Library为我们提供了浏览器兼容层这样一个概念,这样我们就可以不考虑(也不能说完全不考虑,只是这种情况少了很多)浏览器之间对javascript不同的支持,而去使用Microsoft AJAX Library为我们提供的这一个跨浏览器的支持进行开发,而面向对象类型系统,则提高了我们代码的质量(这里,强调一下:合理使用),在Microsoft AJAX Library中,提供了一些在客户端可以直接使用的基础类库,比如最常用的StringBuilder,在我们直接使用AJAX的时候,我们通常需要创建一个XmlHttpRequest,然后对它做一些操作,然后把它send到服务器,然后在客户端得到返回信息,而后进行相应的操作,而异步通信层,是把这些对象进行一些封装,然后丰富这些功能,实际上,在ASP.NET AJAX中,几乎所有的客户端和服务器端进行的交互,都是通过这里的异步通信层。

这里首先演示一个Microsoft AJAX Library提供的面向对象类型系统

在aspx标记中,可以在<script>这个element中创建类,具体方式如下

首先在页面中添加一个ScriptManager

然后插入javascript代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script language="javascript" type="text/javascript">
            Type.registerNamespace("Demo"); //注册一个命名空间
            //定义一个类Vehicle,并定义它的构造函数
            Demo.Vehicle = function(name, fullSpeed) {
                this._name = name;
                this._fullSpeed = fullSpeed;
            }
            //定义类Vehicle的成员
            Demo.Vehicle.prorotype = {
                get_name: function() {//使用get_***或者set_***定义属性,这属于一个约定的做法
                    return this._name;
                },
                get_fullSpeed: function() {
                    return this._fullSpeed;
                },
                set_fullSpeed: function(value) {
                    this._fullSpeed = value;
                },
                toString: function() {//覆盖基类中的toString方法
                    return String.format("This {0}'s full speed is {1}.",this.get_name(),this.get_fullSpeed());
                }
            }
            Demo.Vehicle.registerClass("Demo.Vehicle");//将这个类注册到命名空间中

            Demo.Truck = function(name, fullSpeed, weight) {
                Demo.Truck.initializeBase(this, [name, fullSpeed]);//调用父类的构造函数,并将需要的参数name,fullSpeed传给它
                this._weight = weight;
            }
            Demo.Truck.prototype = {
                get_weight: function() {
                    return this._weight;
                },
                toString: function() {
                    //使用callBaseMethod调用父类方法
                    return Demo.Truck.callBaseMethod(this, "toString") + ",and this truck can load " + this.get_weight() + "kg heavy.";
                }
            }
            Demo.Truck.registerClass("Demo.Truck", Demo.Vehicle); //使用registerClass注册该类,并使它继承自Demo.Vehicle
        </script>

这样,我们就生成了两个客户端类的实例,并分别调用了他们的toString方法

这里我们再看一个Microsoft AJAX Library提供的异步通信层的支持

同样,首先在页面中添加一个ScriptManager控件 然后插入Javascript代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script language="javascript" type="text/javascript">
            function realizeVehicle(name, fullSpeed, myWeight) {
                var request = new Sys.Net.WebRequest();
                request.set_url("GetVehicle.ashx");//设置要调用的一般处理程序,我们接下来将会创建它
                request.set_httpVerb("POST"); //使用POST方式发送数据
                request.add_completed(onCompleted); //定义一个回调函数,在一般处理程序发送回数据后,回调函数将会被执行

                //这里要使用encodeURIComponent方法转义一些特殊字符
                var requestBody = String.format("name={0}&fullSpeed={1}&Weight={2}", encodeURIComponent(name), encodeURIComponent(fullSpeed), encodeURIComponent(myWeight));//定义要发送给服务器端的RequestBody
                request.set_body(requestBody);//设置RequestBody

                request.invoke();
            }

            function onCompleted(response) {
                
                if (response.get_responseAvailable()) {//验证得到的response是否可用
                    var vehicle = response.get_object();
                    $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>

然后定义一个Vehicle类,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
///Vehicle 的摘要说明
/// </summary>
public class Vehicle
{
    private string name;
    private int fullSpeed;
    private float weight;


    public Vehicle(string name,int fullSpeed,float weight)
    {
        this.name = name;
        this.fullSpeed = fullSpeed;
        this.weight = weight;
    }

    public string Name
    {
        get { return this.name; }
    }

    public int FullSpeed
    {
        get { return this.fullSpeed; }
    }

    public float Weight
    {
        get { return this.weight; }
    }
}

然后新建一个GetVehicle.ashx的一般处理程序,这里的作用就是服务器可以接受到客户端的请求,然后通过一些逻辑处理把需要的数据发送回客户端,这也是在通常没有别的框架支持的时候,常用的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%@ WebHandler Language="C#" Class="GetVehicle" %>

using System;
using System.Web;
using System.Web.Script.Serialization;//提供对内容进行json序列化的类

public class GetVehicle : IHttpHandler 
{
    
    public void ProcessRequest (HttpContext context) 
    {
        context.Response.ContentType = "text/plain";
        //从客户端发送过来的RequestBody里得到信息
        string name = context.Request.Params["name"];
        string fullSpeed = context.Request.Params["fullSpeed"];
        string weight=context.Request.Params["weight"];
        
        Vehicle vehicle = new Vehicle(name, Int32.Parse(fullSpeed), float.Parse(weight));
        //JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据
        JavaScriptSerializer jss=new JavaScriptSerializer();
        string jsonVehicle = jss.Serialize(vehicle);
        //输出数据
        context.Response.Write(jsonVehicle);
    }
 
    public bool IsReusable 
    {
        get 
        {
            return false;
        }
    }

}

好了,第一篇文章就到这里,一直想在cnbolgs写一点技术方面的文章,可以迫于没有太多时间,一直没写,最近有些闲暇,又从以前的一些资料里翻出来我们博客园的名人赵劼老师的一些视频教程和我当时照他做的一些示例,说原创不是原创,说照搬也不是,就这样打算再这样在把ASP.NET AJAX写写,因为视频的学习,我个人感觉总是有效率的问题,如果遇到什么问题需要用到这些内容,从视频里找的话真是不容易,所以就半总结的写一些算是蚊帐吧,留做自己的手稿,可能有些不对的地方,希望看到的园友们多批评,我多改正。。。、

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011-10-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ASP.NET AJAX(7)_Microsoft AJAX Library扩展客户端组件继承时需要注意的问题扩展类型如何修改已有类型
首先,延续上一讲的内容,谈一下客户端面向对象类型系统中事件的使用 在C#中定义的一种方式 public class WorkEventArgs:EventArgs { ... } public class SomeClass { public event EventHandler<WorkEventArgs> Work; protected void OnWork(WorkEventArgs e) { if(Work!=null)
小白哥哥
2018/03/07
1.3K0
实现服务器推送消息到客户端ServerPush
ServrPush对服务器的压力还是很大的,服务器并行处理的数量有限,大型的网站有很多的优化策略,但是对客户端可以使用WebScoket(HTML5技术),在浏览器中写Socket,低版本的html中,只能用XmlHttpRequest(XHR)但是效率低,微软推出了一个框架,SignalR(当前浏览器支持html5就用WebScoket,不支持就用XHR)。
静心物语313
2020/03/24
3.1K0
实现服务器推送消息到客户端ServerPush
Ajax登录
使用jQuery.Ajax()实现登录功能 logintest.html–主界面 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>用户登录</title> <script src="jquery.min.js"></script> <script
静心物语313
2020/03/24
1.5K0
Ajax登录
JavaScript学习总结(二)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
一、AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术、改善用户体验,实现无刷新效
张果
2018/01/04
3.7K0
JavaScript学习总结(二)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
AJAX
​AJAX​​ (Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。
捞月亮的小北
2023/12/01
1130
AJAX
ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器
  位于 System.ComponentModel.DataAnnotations 命名空间中的特性指定对数据模型中的各个字段的验证。这些特性用于定义常见的验证模式,例如范围检查和必填字段。而 DataAnnotations 特性使 MVC 能够提供客户端和服务器验证检查,使你无需进行额外的编码来控制数据的有效。
Edison Zhou
2018/08/20
2.1K0
ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器
ASP.NET AJAX(8)__Microsoft AJAX Library中异步通信层的使用什么是异步通信层Micorsoft AJAX Library异步通信层的组成WebRequestExec
什么是异步通信层 Microsoft AJAX Library的组长部分之一 负责ASP.NET AJAX框架中所有的客户端与服务器端的通信 其默认实现了封装了XMLHttpRequest的功能 一个使用XMLHttpRequest发出AJAX请求的示例 创建一个名为RandomNumber.ashx的一般处理程序 <%@ WebHandler Language="C#" Class="RandomNumber" %> using System; using System.Web; public cla
小白哥哥
2018/03/07
2.1K0
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呢,就是说着话的资本,我们也知道,几乎
小白哥哥
2018/03/07
1.6K0
ASP.NET AJAX UpdatePanel 控件实现剖析
使用ASP.NET AJAX框架我们可以搭建快速响应、具有丰富的用户体验的AJAX Web应用程序,而该框架的UpdatePanel控件则提供了一种非常简单的方式来实现Web页面的局部更新,我们不需要在每次回发的时候都加载整个页面。 那这个控件是如何实现这种局部刷新的哪,透过其实现机制我们可以更清楚其优缺点,便于我们确定其使用场合。本文将重点阐述ASP.NET AJAX控件UpdatePanel的实现机制。 1. ASP.NET AJAX 简介 ASP.NET AJAX是微软在ASP.NET 2.0之上对A
葡萄城控件
2018/01/10
6.8K0
ASP.NET AJAX UpdatePanel 控件实现剖析
ASP.NET AJAX(13)__利用Microsoft AJAX Library开发客户端组件Sys.Component成员Sys.IDisposable成员Sys.INotifyDisposin
Microsoft AJAX Library定义了一个客户端组件的模型,它的基类是Sys.Component,它实现了三个接口Sys.IDisposable,Sys.INotifyDisposing,Sys.INotifyPropertyChange Sys.Component成员 get_events() get_id(); set_id(); get_isInitialized(); initialize(); dispose(); raisePropertyChanged(); Sys.IDispos
小白哥哥
2018/03/07
3.1K0
ASP.NET AJAX(13)__利用Microsoft AJAX Library开发客户端组件Sys.Component成员Sys.IDisposable成员Sys.INotifyDisposin
ajax怎么整理,ajax请求的五个步骤是什么?五个步骤整理
大家好,又见面了,我是你们的朋友全栈君。 每掌握一个技术,自然要了解该技术是什么?该技术的塬理又是什么?这样我们才能更深刻的掌握改技术。今天所描述的是ajax请求的五个步骤,希望能让大家对ajax有个
全栈程序员站长
2022/08/29
5880
ajax怎么整理,ajax请求的五个步骤是什么?五个步骤整理
ASP.NET AJAX(5)__JavaScript原生类型以及Microsoft AJAX Library什么是Microsoft AJAX LibraryObject原生类型Object.pro
什么是Microsoft AJAX Library ASP.NET AJAX的客户端部分 纯客户端框架 提供了JavaScript扩展和基础类库 Object原生类型 ECMAScript Spec中定义:一个无序的集合,可以存放任意类型的对象 常作为字典使用 可以使用for-in遍历字典中的每一项 禁止扩展其prototype对象 Miicrosoft AJAX Library并没有扩展Object 类型 Object.prototype toString()/toLocalString()   得到表示
小白哥哥
2018/03/07
1.3K0
ajax实现看视频无刷新评论
学会使用开发者工具找错误,同时使用$.ajax()的好处,可以看到错误的出在那里
静心物语313
2020/03/24
2.5K0
ajax实现看视频无刷新评论
解决ASP.NET中的各种乱码问题
经常发现有人被乱码困扰着,而我感觉比较幸运,很少为此烦恼过。 在这篇博客中,我将把我想到的一些与乱码有关的经验总结出来,供大家参考。 页面显示乱码问题 在一个网站中,有些页面会正常显示,然而,有些
小端
2018/04/16
2.9K0
解决ASP.NET中的各种乱码问题
Asp.Net 用Jquery和一般处理程序实现无刷新上传大文件
上传文件算是比较常规的一个功能,Asp.Net自带了一个上传控件 FileUpload ,简单易用但是体验不太好,所有开发者经常都会选择一个JS插件来进行上传,比如:Uploadify SWFupload  等等... 如果没有特别高的要求,也可以自已实现无刷新有等待效果的上传... 知识了解 利用jQuery Form Plugin的ajaxSubmit方法通过AJAX提交表单    表单提交后,在一般处理程序中HttpContext.Current.Request.Files才能获
Porschev
2018/01/16
2.1K0
Asp.Net 用Jquery和一般处理程序实现无刷新上传大文件
30分钟全面解析-图解AJAX原理
先上原理图: 高清无码图在这里:点我查看大图!!! 背景: 1.传统的Web网站,提交表单,需要重新加载整个页面。 2.如果服务器长时间未能返回Response,则客户端将会无响应,用户体验很差。 3
悟空聊架构
2018/05/18
3.3K0
Ajax & Axios & Json
AJAX (Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。
小简
2023/01/04
3.4K0
Ajax & Axios & Json
ASP.Net开发基础温故知新学习笔记
申明:本文是学习2014版ASP.Net视频教程的学习笔记,仅供本人复习之用,也没有发布到博客园首页。
Edison Zhou
2018/08/20
2.3K0
ASP.Net开发基础温故知新学习笔记
Ajax实现用户注册功能
功能: 1。实现用户注册功能; 2。实现已存在用户名不能注册; 3。用户名、密码非空验证; 4。密码确认; 用户注册界面 Register.html <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>用户注册</title> <script sr
静心物语313
2020/03/24
2.5K0
Ajax实现用户注册功能
AJAX-前后端交互的艺术
当我们通过提交表单向服务器提交内容,或者进行一些其他操作,均涉及到了与浏览器之间的交互,传统的方式与AJAX方式的处理方法是不同的
BWH_Steven
2019/11/28
1.9K0
推荐阅读
相关推荐
ASP.NET AJAX(7)_Microsoft AJAX Library扩展客户端组件继承时需要注意的问题扩展类型如何修改已有类型
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验