AJAX.NET使用者開發指南(5)

來源:互聯網
上載者:User
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為您容易的實現這樣強大的功能提供了可能。

  • Ajax: 一個建立Web應用的新途徑
  • Ajax的錯誤處理機制探討(2)
  • Ajax的錯誤處理機制探討(1)
  • 初次體驗.NET Ajax無重新整理技術
  • Rails系統中的AJAX開發技術簡析(4)


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.