DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> AJAX.NET用戶開發指南(5)
AJAX.NET用戶開發指南(5)
編輯:AJAX詳解     

AJax|開發指南 [Ajax.AJaxMethod]

public string Test1(string name, string email, string comment){
string Html = "";
Html += "Hello " + name + "<br>";
Html += "Thank you for your comment <b>";
html += System.Web.HttpUtility.HtmlEncode(comment);
Html += "</b>.";
return Html;
}

  SessionState

  在服務端函數,你可能需要接受傳送的session信息,為了做到這一點,必須要在想實現這個方式的服務端函數的Ajax.AJaxMethod屬性上傳遞一個參數

  在查看AJax可以支持session的時候,我們先看看其他的特征在下面這個例子中,我們有一個文檔管理系統,當一個用戶對文檔進行編輯的時候會給這個文檔加鎖,其他用戶需要等到這個文檔可用時才能修改不使用AJax,用戶需要不斷等待刷新,因為不得不不斷的去檢查文檔的狀態是否為可用,這當然不是一個很好的方案用AJax的session state支持,這就比較容易了

  我們首先寫一個函數,這個函數通過遍歷文檔ID找到用戶需要的文檔,存儲到session裡,並返回沒有占用的文檔:

'Vb.Net

<Ajax.AJaxMethod(HttpSessionStateRequirement.Read)> _
Public Function DocumentReleased() As ArrayList
If HttpContext.Current.Session("DocumentsWaiting") Is Nothing Then
Return Nothing
End If
Dim readyDocuments As New ArrayList
Dim documents() As Integer = CType(HttpContext.Current.Session("DocumentsWaiting"), Integer())
For i As Integer = 0 To documents.Length - 1
Dim document As Document = document.GetDocumentById(documents(i))
If Not document Is Nothing AndAlso document.Status = DocumentStatus.Ready Then
readyDocuments.Add(document)
End If
Next
Return readyDocuments
End Function
//C#
[Ajax.AJaxMethod(HttpSessionStateRequirement.Read)]
public ArrayList DocumentReleased(){
if (HttpContext.Current.Session["DocumentsWaiting"] == null){
return null;
}

ArrayList readyDocuments = new ArrayList();
int[] documents = (int[])HttpContext.Current.Session["DocumentsWaiting"];
for (int i = 0; i < documents.Length; ++i){
Document document = Document.GetDocumentById(documents[i]);
if (document != null && document.Status == DocumentStatus.Ready){
readyDocuments.Add(document);
}
}
return readyDocuments;
}
}
  我們在屬性參數中指明了HttpSessionStateRequirement.Read(還可以是Write and ReadWrite)

  下面寫Javascript函數來使用這個方法帶來的結果:

<script language="Javascript">
function DocumentsReady_CallBack(response){
if (response.error != null){
alert(response.error);
return;
}

if (response.value != null && response.value.length > 0){
var div = document.getElementById("status");
div.innerHtml = "The following documents are ready!<br />";
for (var i = 0; i < response.value.length; ++i){
div.innerHtml += "<a href=\"edit.ASPx?documentId=" + response.value[i].DocumentId + "\">" + response.value[i].Name + "</a><br />";
}
}
setTimeout('page.DocumentReleased(DocumentsReady_CallBack)', 10000);
}

</script>
<body >


  頁面加載後每10秒鐘向服務器函數請求一次如果有返回,則call back函數檢查response,並把最新的結果顯示出來

 結論

  Ajax技術可以給客戶端提供豐富的客戶體驗,而AJax.Net為您容易的實現這樣強大的功能提供了可能。

 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved