技術人員詳細說明調用JS 標準相關問題
我們已經介紹了如何在 JavaScript 中、以及通過 Jayrock 在 .NET Framework 中使用JSON 標準,接下來我們來看一個關于在何處以及如何應用這些知識的實際示例。考慮 ASP.NET 2.0 的客戶端腳本回調功能。
JSON 標準可簡化 web 瀏覽器向 ASP.NET 頁面(或向頁面中的特定控件)發出帶外調用的過程。在典型的回調情形中,瀏覽器中的客戶端腳本將數據打包并回送到 web 服務器,由服務器端方法進行某些處理。從服務器收到響應數據后,客戶端會用它來更新瀏覽器顯示。
注意 可在《MSDN 雜志》的文章JSON 標準“ASP.NET 2.0 中的腳本回調”中找到更多信息。客戶端回調情形中的難題在于,客戶端和服務器只能來回運送一個字符串。因此,待交換的信息必須在發送前從本機內存中的表示形式轉換為字符串,然后在收到后從字符串分析回本機內存中的表示形式。
ASP.NET 2.0 中的客戶端腳本回調功能不要求進行交換的數據使用特定字符串格式,也不提供在本機內存中和字符串表示之間進行轉換的任何內置功能;開發人員可以依據所選擇的數據交換格式來實現轉換邏輯。#t#
以下示例說明了如何在客戶端腳本回調情形中將 JSON 用作數據交換格式。特別是,該示例由 ASP.NET 頁面組成,此頁面使用 Northwind 數據庫中的數據,以下拉列表形式提供類別列表;選定類別中的產品則顯示在項目符號列表中(請參見圖 3)。每當客戶端更改下拉列表時,將發生回調并傳入***元素為選定 CategoryID 的數組。
注意 我們傳入的是包含選定 CategoryID 作為其***元素的數組(而不僅僅是 CategoryID),因為 JSON 標準要求任何 JSON 文本都必須有對象或數組作為其根。當然,客戶端不需要向服務器傳遞 JSON 文本,在此示例中本來可以只將選定的 CategoryID 作為字符串進行傳遞。
但是,我們想要演示在回調的請求和響應消息中發送 JSON 文本。Page_Load 事件處理程序的以下代碼配置了 Categories DropDownList Web 控件,以便在它發生更改時調用 JSON 標準函數,并傳遞選定的下拉列表值。如果傳入的下拉列表值大于零,此函數會初始化客戶端腳本回調:
- // Add client-side onchange event to drop-down list
- Categories.Attributes["onchange"] = "Categories_onchange(this);";
- // Generate the callback script
- string callbackScript = ClientScript.GetCallbackEventReference(
- /* control */ this,
- /* argument */ "'[' + categoryID + ']'",
- /* clientCallback */ "showProducts",
- //* context */ "null");
- // Add the Categories_onchange function
- ClientScript.RegisterClientScriptBlock(GetType(),
- "Categories_onchange", @"
- function Categories_onchange(sender)
- {
- clearResults();
- var categoryID = sender.value;
- if (categoryID > 0)
- {
- " + callbackScript + @"
- }
- }", true);