zoukankan      html  css  js  c++  java
  • ajax.net Profession 点滴

        学习了一下,把这过程中值得一说的拿出来说说。
        先谈谈版本问题吧,在作者的网站上,说是ajax.net已经不再开发,有一个开源的版本是在他的版本基础上继续开发的,主要是增加了ajax控件吧。而 作者重新开发了一个ajax.net profession ,咳,搞不懂why。目前还是一个beta版本,我学习的就是这个。现在这个网站好像变成了 demo,原来的页面找不到了,sorry,就不提供链接了,给个作者的blog吧,http: //weblogs.asp.net/mschwarz/  。
        有关版权和源码问题,在yahoo小组曾经有过讨论,有人说schwarz一直不申明这个软件是否free,而schwarz则说,是free的,只不过 他不知道到底采用何种版权申明,所以没明确下来。而源码,前几天刚发布了一个,不是最新版的,我已收到这个源码,但还没仔细看。
        回到主题,谈谈学习过程中的收获。先申明一下,本人不是专职开发人员,技术水准有限,以下都是一个新手的记录而已,呵。
        首先学习ajax.net Pro,最好还是看demo。基本把它的作用和使用说清楚了。
        我是在2.0环境下学习的,这里有一个和1.1不同的地方,就是网页对应类的namespace问题。vs2005新建一个页面,默认的网页代码文件里没 有namespace声明,而demo里很明确的表明,要调用ajax.method,就要用 namespace.classname.methodname的方式,解决办法,开始是修改网页,强制声明namespace。后来在这里的一篇 blog(忘记是哪篇了,sorry)提到,不申明namespace,那默认的就是ASP,果然,用这个命名空间就OK了.  如果是新手,调测时报告找不到方法对象,就很可能和这个namespace有关。
        后来又遇上个问题,我申明了一个类,没有默认的空参数的构造函数,在js文件中将这个类作为method的参数,结果调用时老是返回找不到构造函数的错 误,与demo比较了半天才定位到这个错误原因,看来ajax.netPro支持的类传递还是有很多限制的,可惜没有比较好的文档说清楚。
        最后,给一点代码,一篇文章,没代码怎么成? ;)   (以下代码大部分抄袭demo,赫赫。)
    要使用ajax.netPro,先按照http://dotnet2.schwarz-interactive.de/quickguide.aspx 做
    配置一下web.config
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <system.web>
    <httpHandlers>
    <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
    </httpHandlers>


    [...]

    </system.web>
    其次,要在页面中注册一下
    protected void Page_Load(object sender, EventArgs e)
    {
    AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
    }
    将要在js里调用的方法加上ajax的属性,示例如下:
    [AjaxPro.AjaxMethod]
    public DateTime GetServerTime()
    {
    return DateTime.Now;
    }
    最后,在js中要调用这个GetServerTime,可以用这个办法:
    function getServerTime()
    {
    alert(MyDemo._Default.GetServerTime();

    }
    说明一下,MyDemo._Default 是页面的类名,如果没有特别申明namespace,就改为ASP._Default 。这个调用方法其实是同步调用,也就是说,网页会挂起直到函数有返回值。而作者的示例是如下的异步调用方式:

    function getServerTime()
    {
    MyDemo._Default.GetServerTime(getServerTime_callback); // asynchronous call
    }

    // This method will be called after the method has been executed
    // and the result has been sent to the client.

    function getServerTime_callback(res)
    {
    alert(res.value);
    }
    可以看出,每个[AjaxPro.AjaxMethod]在js里调用的方法有2个,一个是同步,如fun(参数1,参数2...),另一个是异步,fun(参数1,参数2...,callback_function)
    而callback_function的参数就一个,res 。 可惜,res里面除了value,是否还有其他属性就不知道了,原来ajax.net文章里提到有url,error等,但我在ajax.netPro里测,没有这些。(老实说schwarz提供的文档还真少)有空看看源码就明白了,赫赫。
    demo里面的应用有很多个,不再说明,就简单说一下和anthem的区别吧。
    anthem主要是对控件进行包装,比如他提供了anthem.label,这样要做ajax效果就比较方便,而自定义类的函数调用,好像也可以,但明确只能用一些基本类型和dateset作为参数。而ajax.netPro的使用方式与之有很大不同,不提供控件,只提供对自定义类的ajax.method封装调用,使用时候写的js要比较多。但我个人喜欢这种方式,有更自由的感觉。
    最后,感谢一下小气的神(ccBoy),他最近发的关于ajax架构的文章非常棒。(赫赫,就是只能大致明白他的意思,就是具体技术说明部分不是很看得懂)
  • 相关阅读:
    Servlet3.0-使用注解定义Servlet
    poj 1256 Anagram—next_permutation的神奇应用
    poj 1664 放苹果 (划分数)
    poj 1011 Sticks
    poj和hdu部分基础算法分类及难度排序
    Notepad++支持jQuery、html5、css3
    Codeforces Round #395 (Div. 2) C. Timofey and a tree
    Codeforces Round #390 (Div. 2) D. Fedor and coupons
    bazel-编译动态库
    bazel-编译多目标
  • 原文地址:https://www.cnblogs.com/honghuamin/p/336561.html
Copyright © 2011-2022 走看看