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