ajax.net Profession 點滴

來源:互聯網
上載者:User

    學習了一下,把這過程中值得一說的拿出來說說。
   
先談談版本問題吧,在作者的網站上,說是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架構的文章非常棒。(赫赫,就是只能大致明白他的意思,就是具體技術說明部分不是很看得懂)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.