輕量級的Ajax解決方案——DynAjax:直接在客戶端調(diào)用C#類的方法_AJAX教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:解讀輕量級的Ajax解決方案——DynAjax的JQuery版下班了,剛到家,老婆在做飯,小家伙在玩玩具,暫時沒騷擾我。呵呵!趁這空閑寫會博客。前兩天答應改造DynAjax為JQuery版本,今天就完成這個任務吧。 上一篇隨筆介紹了輕量級的Ajax解決方案DynAjax,可惜原作者只有寫支持Prototype.js版本的。 DynAjax用到Pr
前言:MS Ajax我在以前一個項目中使用過,感覺太笨重了,速度比較慢,而且出了問題,很難控制。所以我一直想用一個可控制的替代框架。
客戶端JS框架肯定首推JQuery,優(yōu)雅簡潔的代碼,完美的支持表現(xiàn)和邏輯分離,讓人一見傾心。
服務器端框架我找了一些,國內(nèi)的大部分還都是零散的代碼或處于萌芽狀態(tài),大多數(shù)實現(xiàn)JSON的C#類就沒下文了,對安全性都沒有整合的建議。
直到今天,我發(fā)現(xiàn)了DynAjax,開源的,完全可控的Ajax服務器端框架。原項目作者是法國人(Mr Benoît BEGUIN),現(xiàn)翻譯作者的介紹如下。
概述
DynAjax是一個Javascript / Ajax / ASP.Net / C# 結合的Ajax框架,它能幫助我們很容易地直接通過Javascript動態(tài)調(diào)用服務器端的C#方法(就像Java世界的DWR)。對象序列化基于JSON,支持混合對象轉(zhuǎn)換。下載最新正式版 (v1.04)
DynAjax v1.04DynAjax是什么 ?
DynAjax 是以C# .Net / ASP .Net為服務器端、以Prototype為客戶端的Ajax框架(譯者按:發(fā)現(xiàn)DynAjax只有Prototype版本的,稍后一些日子我會發(fā)布改寫的JQuery版的DynAjax),它支持從客戶端通過Javascript直接訪問服務器端C#方法.DynAjax 為誰準備的 ?
以下 C# / ASP .Net 開發(fā)者:如果想要添加直接有效、方便的Ajax到你的網(wǎng)站 或者 專業(yè)級的項目開發(fā) (我用它來開發(fā)自己公司的專業(yè)級項目).DynAjax到底能做些什么,怎么做的?
假設你正在開發(fā)一個專業(yè)網(wǎng)站程序,你需要保存一些文本數(shù)據(jù)型的用戶信息到數(shù)據(jù)庫中,同時又不發(fā)送Html表單,也不刷新頁面。顯然,你需要使用Ajax。你打算使用原始的XmlHttpRequest (Ajax) 請求數(shù)據(jù)和檢測返回的數(shù)據(jù)等等,發(fā)送數(shù)據(jù)并確認正確被保存?這種原始的方法讓人感到繁瑣。
通過使用DynAjax,你可以很容易地保存這些文本數(shù)據(jù),而代價只是寫寫簡單的JavaScript (假設有一個類"MyClass",里面有個公共方法叫“saveText”,方法返回string類型的“ok”,你可以這樣調(diào)用) :
很簡單的使用方法哦,不是嗎?var response = MyClass.saveText(myText);
if (response == "ok") {
--- code here ---
}
瀏覽 示例頁 查看更多的例子和源碼.
DynAjax是同步還是異步的?
取決你的使用:如果你想同步調(diào)用,使用這種語法形式:如果你想異步調(diào)用,可以使用下面這種語法形式:var response = MyClass.myMethod(myArgs);
if (response >= 2) {
--- code here ---
}
DynAjax 推薦采用這種異步方式。MyClass.myMethod(myArgs, function(response) {
if (response >= 2) {
--- code here ---
}
});
DynAjax支持哪些數(shù)據(jù)類型可以被客戶端Javascript接收?
幾乎所有數(shù)據(jù)類型都能從服務器端返回到客戶端。事實上,數(shù)據(jù)被轉(zhuǎn)換為JSON格式 (JSON是Javascript與其他語言比如C#.Net,Java等交換數(shù)據(jù)的特殊格式,有點類似xml的功能。)這種格式支持以下數(shù)據(jù)類型:
- Strings 字符串
- Numbers (int, decimal...) 數(shù)字
- Booleans 布爾
- Arrays 數(shù)組
- HashTables 哈希表
- Complex objects復合對象 (由成員變量, Arrays, HashTables, Arrays 或者其他復合對象 等等 構成)
- "null" value
如你所見, 幾乎所有(數(shù)據(jù)類型)都是可能的:你可以做到的。打個比方 , 如果你想開發(fā)一個eBay類型的網(wǎng)站,在搜索頁面,訪問一個返回商品【實例】列表(List)的方法,并顯示列表 - 你只需要通過Javascript重復循環(huán)訪問返回的JSON格式性質(zhì)列表 (List),進而訪問每個商品【實例】,然后訪問【實例】屬性。這就如你在C#里面做的一樣,酷!
如果你想對JSON這個格式有更多了解,請訪問 Json description site(英文)。
安全性怎樣?
DynAjax 針對所有可遠程訪問的Method(方法),皆提供了安全驗證機制.事實上,每個方法必須被定義到XML格式的配置文件中,你可以設定這個方法是-需要-還是-不需要-訪問驗證。.
所以,即便黑客也不能在未驗證通過的情況下訪問 需要 驗證的方法。
安裝/設置DynAjax到我的Web應用程序中會麻煩嗎?
不麻煩, DynAjax基于8 個文件 :- DynAjaxHandler.aspx 和DynAjaxHandler.cs - Ajax處理器,接受和分派所有的DynAjax調(diào)用
- dynAjaxScript.aspx 和dynAjaxScript.cs - 動態(tài)生成客戶端JavaScript,屬于DynAjax的重要部分 (盡管這個文件擴展名是aspx,但它作為js調(diào)用)
- prototype.js - prototype框架
- Newtonsoft.Json.dll - 一個.net的Json程序集
- log4net.dll - 日志庫
- dynAjaxConfig.xml - DynAjax 的配置文檔(XML格式的)
這8 個文件必須直接拷貝到Web應用程序目錄中, 只有dynAjaxConfig.xml可以根據(jù)需要進行配置修改,其他文件非專業(yè)不要修改.
相當容易,對吧 ?
您可以看看第一本DynAjax教程 DynAjax 教程 01(英文),一步一步地進行DynAjax的安裝/配置。
分享:解析ajax實現(xiàn)無刷新驗證用戶名是否存在實現(xiàn)用的是jdbc+jsp+servlet,數(shù)據(jù)庫用的是mysql 表就2個字段 實現(xiàn)原理獲得text的值后,通過調(diào)用servlet查詢數(shù)據(jù)庫里是否存在,在通過xml傳到前臺 OperationName.java response.setContentType(text/xml;charset=UTF-8)這句很重要,沒有他前臺獲得不到xml,之前
相關AJAX教程:
- Ajax中瀏覽器的緩存問題解決方法
- AJAX和WebService實現(xiàn)省市縣三級聯(lián)動具體代碼
- ajax 登錄功能簡單實現(xiàn)(未連接數(shù)據(jù)庫)
- AJAX和WebService實現(xiàn)郵箱驗證(無刷新驗證郵件地址是否合法)
- AJAX和三層架構實現(xiàn)分頁功能具體思路及代碼
- 使用AJAX返回WebService里的集合具體實現(xiàn)
- AJAX獲取服務器當前時間及時間格式輸出處理
- ajax傳遞多個參數(shù)具體實現(xiàn)
- ajax傳遞一個參數(shù)具體實現(xiàn)
- 滑輪滾動到頁面底部ajax加載數(shù)據(jù)配合jsonp實現(xiàn)探討
- jQery ajax——load()方法示例介紹
- jQuery+Ajax實現(xiàn)表格數(shù)據(jù)不同列標題排序(為表格注入活力)
- 相關鏈接:
- 教程說明:
AJAX教程-輕量級的Ajax解決方案——DynAjax:直接在客戶端調(diào)用C#類的方法
。