热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ajax.NET基础教程

AJAX技术的风起云涌,也使得B/S应用的表现力日益增强,大有逐步吞食C/S领地之势。利用Ajax.Net,你可以从JavaScript客户调用.NET方法。首先下载Ajax.Net,你可以从http://www.ajaxpro.info/获得。最新版本是6.4.15.1,下载解压后的文件夹中有个AjaxPro.dll
 AJAX技术的风起云涌,也使得B/S应用的表现力日益增强,大有逐步吞食C/S领地之势。利用Ajax.Net,你可以从Javascript客户调用.NET方法。    
首先下载Ajax.Net,你可以从http://www.ajaxpro.info/获得。最新版本是6.4.15.1,下载解压后的文件夹中有个AjaxPro.dll,就是它了。使用VS2005新建web项目,并添加对AjaxPro.dll的引用,然后在Web配置文件中添加:

        
            
        

这个配置项表明所有的ajaxpro/*.ashx请求(即从客户发送的Ajax请求)都交给AjaxPro.AjaxHandlerFactory处理,而不是由默认的System.Web.UI.PageHandlerFactory来处理。 
新建的web项目有个默认的_Default页面,我们为其加上命名空间如MyAjaxNetTest,然后在_Default的HTML第一句也要加上这个名目空间:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="MyAjaxNetTest._Default" %>

    然后在PageLoad中注册本页面到AjaxPro中:

        protected void Page_Load(object sender, EventArgs e)
        {
            AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default)); 
        }

    测试一
一切已经准备就绪了,我们先进行第一个测试,从客户调用服务端的简单方法。首先在_Default类中添加方法:

         [AjaxPro.AjaxMethod]
        public string GetServerTime()
        {
            return DateTime.Now.ToString();
        }

    客户现在可以在JS中调用这个方法了,如

       

    然后你可以加个HTML的button,onclick处理函数设为getTime()。

测试二:    
    为GetServerTime方法添加static修饰,测试仍然成功!

    测试三: 
简单方法调用已经OK了,GetServerTime方法返回的是一个简单的string,那么服务端可不可以返回稍微复杂一点的对象了?我们来试试。先新建一个Student类:

     public class Student
    {
        public string Name = "sky" ;
        public int     Age = 26;
    }

    服务端添加GetStudent方法:

        [AjaxPro.AjaxMethod]
        public Student GetStudent()
        {
            return new Student();
        }

    对应的,客户端添加调用:

       function getStudent()
       {
         var stu = MyAjaxNetTest._Default.GetStudent().value ;
         alert(stu.Name + " " + stu.Age) ;
       }

依照前面的加个HTML按钮测试getStudent函数,答案是,一切照我们预料的进行,客户js可以访问服务端返回的对象。

    测试四

    最后看看能够在客户端提交对象给服务器,先在服务端添加方法:

1         private Student student = null;
2         [AjaxPro.AjaxMethod]
3         public void SetStudent(Student stu)
4         {
5             this.student = stu;
6             string name = this.student.Name;
7         }

    可以在第六行添加断点,然后当客户端调用时,会进入该断点。

    客户端添加调用:

     function putStudent()
       {
            var stu = MyAjaxNetTest._Default.GetStudent().value ;
            stu.Name = "chenqi" ;
            MyDemo._Default.SetStudent(stu) ;
       }

同样,当调用putStudent这个js方法时,服务端进入断点已经表明客户成功的提交了对象,并且对象的Name字段已经改变为“chenqi”了。

    测试五
前面客户设置的都是Student的public字段,那么访问属性如何了?我们将Student定义更改如下:

     public class Student
    {
        private string name = "sky" ;
        public int Age = 26; public string Name
        {
            get
            {
                return this.name;
            }
            set
            {
                this.name = value;
            }
        }
    }     再重复前面的测试,结果我想已经在你的料想中了。

    单从前面的几个小测试,我已经发现了使用Ajax.Net的方便与迅捷,看来B/S开发不再像我以前感受的那样繁琐了。

备忘录:Ajax基础
(1)创建XmlHttpRequest对象

var xmlHttp ;
            function createXMLHttpRequest()
            {
                if(window.ActiveXObject)
                {
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP") ;
                }
                else if(window.XMLHttpRequest)
                {
                    xmlHttp = new XMLHttpRequest() ;
                }                
            }

(2)POST Ajax请求

function startRequest()
            {
                createXMLHttpRequest() ;
                xmlHttp.onreadystatechange = handleStateChangeComplex ;
                xmlHttp.open("POST" ,"WebForm1.aspx?timeStamp="+ new Date().getTime(),true) ;
                xmlHttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded") ;
                xmlHttp.send("ID=中国123") ;
            }        

    服务端可以通过QueryString获取xmlHttp.send方法传递的参数。

(3)处理异步结果

function handleStateChangeComplex()
            {
                if(xmlHttp.readyState == 4)
                {
                    if(xmlHttp.status == 200)
                    {
                        document.getElementById("results").innerText = xmlHttp.responseText ;
                    }
                }
            }


推荐阅读
  • 前言对于从事技术的人员来说ajax是这好东西,都会使用,而且乐于使用。但对于新手,开发一个ajax实例,还有是难度的,必竟对于他们这是新东西。leo开发一个简单的ajax实例,用的是 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 表单提交前的最后验证:通常在表单提交前,我们必须确认用户是否都把必须填选的做了,如果没有,就不能被提交到服务器,这里我们用到表单的formname.submit()看演示,其实这个对于我们修炼道 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 前言:关于跨域CORS1.没有跨域时,ajax默认是带cookie的2.跨域时,两种解决方案:1)服务器端在filter中配置详情:http:blog.csdn.netwzl002 ... [详细]
  • XMLhttpREquest_Ajax技术总结之XmlHttpRequest
    Ajax1、 什么是ajax   ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • Itwasworkingcorrectly,butyesterdayitstartedgiving401.IhavetriedwithGooglecontactsAPI ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
author-avatar
xuyang200788
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有