簡單介紹
AJax(Asynchronous Javascript + XML)應用可以僅向服務器發送並取回必需的數據,它使用SOAP或其它一些基於XML的web service接口,並在客戶端采用JavaScript處理來自服務器的響應。因為在服務器和浏覽器之間交換的數據大量減少,結果我們就能看到響應更快的應用。同時很多的處理工作可以在發出請求的客戶端機器上完成,所以Web服務器的處理時間也減少了。
AJax應用程序的優勢在於:
1. 通過異步模式,提升了用戶體驗
2. 優化了浏覽器和服務器之間的傳輸,減少不必要的數據往返,減少了帶寬占用
3. AJax引擎在客戶端運行,承擔了一部分本來由服務器承擔的工作,從而減少了大用戶量下的服務器負載。
配置
AJax.Net有AjaxPro.dll和AJax.dll兩個版本,這兩個版本使用上雖然差不多,但還是有區別的,主要的區別在下面兩點:
1. web.config配置文件不一樣
AJax.dll的配置文件寫法為
<addverb="POST,GET"path="ajax/*.ashx"type="Ajax.PageHandlerFactory,AJax"/>
AJaxPro.dll的配置文件寫法為
<addverb="*"path="ajaxpro/*.ashx"type="AjaxPro.AjaxHandlerFactory,AJaxPro"/>
2. 調用服務器方法的時候方式不一樣,有很多朋友就是因為這個原因,發現命名空間找不到或者對象未定義
引用AJax.dll的時候,調用服務器方法不要加命名空間,
引用AJaxPro.dll的時候,調用服務器方法需要加命名空間
例如當頁面設置為這種設置的時候
<%@Pagelanguage="c#"Codebehind="Test.ASPx.cs"AutoEventWireup="false"Inherits="Web.Test"%>
3. 客戶端調用方式
AJax.dll為
varresponse=Test.GetServerMethod();
alert(response.value);
AJaxPro.dll為
varresponse=Web.Test.GetServerMethod();
alert(response.value);
具體使用步驟
1. 首先下載AjaxPro 組件。並將AJaxPro.dll引用到網站(或項目)。
2. 修改Web.config。在 <system.web> 元素中添加以下代碼。
<configuration>
<system.web>
<httpHandlers>
<!-- Register the AJax handler -->
<add verb="*" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AJaxPro"/>
</httpHandlers>
</system.web>
</configuration>
3. 對AJaxPro在頁Page_Load事件中進行運行時注冊。如:
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAJax(typeof(_Default));//這的_Default是指頁面
類的類名。如是放在命名空間,則需要寫上完整的命名空間(如:namespaces._Default)
}
4. 創建服務器端方法。只要給一個方法加上[AjaxPro.AJaxMethod]標記,
該方法就變成一個AJaxPro可進行影射調用的方法。如下:
[AjaxPro.AJaxMethod]
public string getValue(int a,int b)
{
//該方法我們將實現從客戶端傳入兩個數,在服務器端相加計算後返回到客戶端。
return Convert.ToString(a+b);
}
5. 客戶端調用。
<script language="Javascript">
function getValue(){
_Default.getValue(1,2,getGroups_callback);//該處即調用服務器端的_Default.getValue方法。
這在裡邊需要指定個回調函數,以接受服務器端處理完後返回客戶端結果。
form1.TextBox1.value="123";
}
//這個方法用戶接受並處理服務器端返回的結果。
function getGroups_callback(response){
var dt=response.value;
alert(dt);
}
</script>