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