DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> AJAX.NET用戶開發指南(4)
AJAX.NET用戶開發指南(4)
編輯:AJAX詳解     
AJax|開發指南 private void Page_Load(object sender, EventArgs e){
Utility.RegisterTypeForAJax(typeof(User));
}
  在客戶端我們可以通過這樣的方式調用GetUser函數:

<script language="Javascript">
function getUser(userId){
User.GetUser(GetUser_callback);
}

function GetUser_callback(response){
if (response != null && response.value != null){
var user = response.value;
if (typeof(user) == "object"){
alert(user.FirstName + " " + user.LastName);
}
}
}
getUser(1);
</script>
  返回值同服務器端對象一樣有三個屬性(FirstName, LastName and UserId)

  譯者注:其他的類型只能由開發者通過在服務器端函數在返回值時自定義轉換為ajax支持的類型來實現了,AJax推薦使用ToString方法

  其他工作方式

  在其他類注冊函數

  在上面的例子及描述中,我們都是通過在頁面的codebehind文件裡完成函數的注冊,但並不是說只能在頁面的codebehide文件裡完成注冊,我們也可以在其他類中注冊函數回憶一下,Ajax封裝類是通過在特定類裡面查找那些有Ajax.AJaxMethod()屬性的方法來完成工作的,這些類在客戶端又通過兩個script片斷來完成返回值描述使用Ajax.Utility.RegisterTypeForAJax,我們可以得到任何我們想得到類的詳細內容例如,下面的例子可以說明我們在其他類中使用服務器端函數是合法的:

Public Class AJaxFunctions
<Ajax.AJaxMethod()> _
Public Function Validate(username As String, passWord As String) As Boolean
'do something
'Return something
End Function
End Class
  不過我們需要首先在調用頁面注冊這個代理類,類的名字不再是頁面類,而是我們使用的這個類:

'Vb.Net

Private Sub Page_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Ajax.Utility.RegisterTypeForAjax(GetType(AJaxFunctions))
'...
End Sub
//C#

private void Page_Load(object sender, EventArgs e){
Ajax.Utility.RegisterTypeForAjax(typeof(AJaxFunctions));
//...
}
  記住,客戶端調用使用這種格式的名字<ClassName>.<ServerSideFunctionName>因此,如果上面的Serversideadd函數位於AjaxFunctions類,而不是頁面類的話,客戶端調用則變為:AJaxFunctions.ServerSideAdd(1,2)

  代理是怎樣工作的呢?

  第二個script標簽,如下面的示例

<script type="text/Javascript" src="/cqyd/AJax/cqyd.SchemeSendWatch,cqyd.ashx"></script>

  是由Ajax utility通過命名空間、類以及頁面程序集自動生成的(當然也可以人工加入),從這一點我們可以想到AJax.PageHandlerFactory是通過反射來取得有定制屬性的函數的細節很顯然,Handler尋找帶有AJaxMethod定制屬性的函數,取得他們的特征(返回類型、名稱、參數)並依據這些信息創建客戶端代理特別的,AJax創建一個與類型相同的JavaScript對象作為代理

  返回Unicode字符

  AJax.Net可以從服務器端向客戶端返回Unicode字符,為了做到這一點,在服務端函數返回時返回的值必須是Html編碼的
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved