淺談ASP.NET AJAX
正式給出調(diào)用后臺(tái)類的語(yǔ)法:
類名.方法名(參數(shù)1,參數(shù)2,……,參數(shù)n,回調(diào)函數(shù))
也就是說(shuō),調(diào)用上有兩個(gè)差別:一是不需要使用變量接收返回值,二是要在所有參數(shù)后面加一個(gè)參數(shù):回調(diào)函數(shù)。例如,有個(gè)類的方法,在后臺(tái)調(diào)用是:
- var1 = Class1.Method1(Para1,Para2);
換到前臺(tái)JS調(diào)用時(shí),就是如下的樣子:
- Class1.Method1(Para1,Para2,CallBackFunction);
那么,返回值到哪里去取呢?答案是到回調(diào)函數(shù)中,回調(diào)函數(shù)的原型是:回調(diào)函數(shù)名(返回值)。當(dāng)然,存儲(chǔ)返回值變量的名字是開(kāi)發(fā)人員隨意取的,然后就可以在回調(diào)函數(shù)中使用這個(gè)返回值變量了。例如,接著上面程序,寫(xiě)一個(gè)函數(shù):
- function CallBackFunction(result){}
則在這個(gè)函數(shù)中,result就含有Class1.Method1(Para1,Para2,CallBackFunction);的返回值。
為什么不直接調(diào)用類中的方法,而非要經(jīng)過(guò)WebService呢?
上文我曾經(jīng)說(shuō)過(guò),ASP.NET AJAX允許我們直接調(diào)用后臺(tái)類中的方法,但是我們不提倡這樣做,而是提倡經(jīng)過(guò)WebService的過(guò)渡。其原因有如下幾點(diǎn):
1.要使得某個(gè)類可以被JS調(diào)用,也需要在其中做一些修改,如增加一些屬性(Attribute)等,這會(huì)對(duì)這些類造成一種“污染”。
2.我們知道了,使用ASP.NET AJAX框架也需要從回調(diào)函數(shù)中獲取返回值,而不是直接獲取??紤]以下情況:如果某段JS需要調(diào)用三個(gè)后臺(tái)方法完成一個(gè)操作,那么,就需要寫(xiě)三個(gè)回調(diào)函數(shù)。即要經(jīng)過(guò)“調(diào)用第一個(gè)方法-第一個(gè)回調(diào)函數(shù)中調(diào)用第二個(gè)方法-第二個(gè)回調(diào)函數(shù)中調(diào)用第三個(gè)方法-第三個(gè)回調(diào)函數(shù)中取得返回值”。
這個(gè)過(guò)程很麻煩。而使用WebService后,我們可以將這個(gè)三個(gè)方法封裝到一個(gè)WebService方法里,因?yàn)閃ebService是支持“變量=類名.方法名”這種傳統(tǒng)的調(diào)用方法的。這樣經(jīng)過(guò)WebService過(guò)渡,JS中只要一個(gè)回調(diào)函數(shù)就可以了。
3.從本身特性上看,WebService比普通類更適合作為ASP.NET AJAX的后臺(tái)方法。
【編輯推薦】