深度剖析JSON 形式的相關(guān)問(wèn)題
當(dāng)用戶(hù)輸入新車(chē)輛數(shù)據(jù)時(shí),您將在數(shù)組對(duì)象中創(chuàng)建一個(gè)新元素。不需要任何笨拙的字符串操作。當(dāng)用戶(hù)輸完所有車(chē)輛數(shù)據(jù)后,您只需構(gòu)建一個(gè)源于該對(duì)象的 JSON 字符串,并通過(guò)存儲(chǔ)到某個(gè)隱藏字段中的方式將該字符串發(fā)送至服務(wù)器。這種方法要比第一種方法好得多。
現(xiàn)在,多組屬性和多值屬性面臨的問(wèn)題是必須將數(shù)據(jù)輸入到相同的輸入字段中。那意味著在輸入第二臺(tái)車(chē)輛的數(shù)據(jù)之前,必須先保存已輸入的第一臺(tái)車(chē)輛的數(shù)據(jù)。您可以通過(guò)兩種方法來(lái)解決此問(wèn)題:
將第一臺(tái)車(chē)輛的數(shù)據(jù)發(fā)送到服務(wù)器上并清空輸入字段,以允許用戶(hù)輸入下一臺(tái)車(chē)輛的數(shù)據(jù)。 JSON 形式將數(shù)據(jù)緩存到客戶(hù)機(jī)上并清空輸入字段,以允許用戶(hù)輸入下一臺(tái)車(chē)輛的數(shù)據(jù)。第一種方法存在的問(wèn)題是每輸入一臺(tái)車(chē)輛的數(shù)據(jù)就需要訪問(wèn)一次服務(wù)器。#t#
這不太好;如果在輸入車(chē)輛數(shù)據(jù)后都必須等待服務(wù)器響應(yīng),用戶(hù)會(huì)覺(jué)得很失望。換種方法,第二種方法的響應(yīng)時(shí)間幾乎為零。用戶(hù)可以快速輸入所有車(chē)輛數(shù)據(jù)而無(wú)需等待。但這里需要考慮的是如何將數(shù)據(jù)存儲(chǔ)到客戶(hù)端上。這里有更多方法可將數(shù)據(jù)存儲(chǔ)到客戶(hù)機(jī)上:
在用戶(hù)單擊以添加下一臺(tái)車(chē)輛的數(shù)據(jù)時(shí)將數(shù)據(jù)以某種形式緩存到隱藏的表字段中。 將數(shù)據(jù)緩存到一個(gè) JavaScript 對(duì)象中。如果要將數(shù)據(jù)存儲(chǔ)到隱藏字段中,您會(huì)為用戶(hù)每次輸入新的車(chē)輛數(shù)據(jù)都要處理很多隱藏字段或處理隱藏字段數(shù)據(jù)而感到煩惱。這就像有字符串操作就需要頻繁處理字符串一樣。
但是第二種緩存數(shù)據(jù)的方法提供了一種面向?qū)ο蟮姆椒▉?lái)緩存。當(dāng)用戶(hù)輸入新車(chē)輛數(shù)據(jù)時(shí),您將在數(shù)組對(duì)象中創(chuàng)建一個(gè)新元素。不需要任何笨拙的字符串操作。當(dāng)用戶(hù)輸完所有車(chē)輛數(shù)據(jù)后,您只需構(gòu)建一個(gè)源于該對(duì)象的JSON 形式,并通過(guò)存儲(chǔ)到某個(gè)隱藏字段中的方式將該字符串發(fā)送至服務(wù)器。這種方法要比第一種方法好得多。
當(dāng)用戶(hù)提交一個(gè)頁(yè)面時(shí)調(diào)用的函數(shù)實(shí)際上用于驗(yàn)證最少的出現(xiàn)次數(shù)。這種方法的最大好處是屏幕不需要刷新以輸入新車(chē)輛數(shù)據(jù)。提供此類(lèi)靜態(tài)屏幕曾經(jīng)是 Ajax 技術(shù)的主要目標(biāo),而您現(xiàn)在用 JSON 也能完成此目標(biāo)。
這是關(guān)于更新 JSON 形式對(duì)象和通過(guò) JavaScript 處理 HTML DOM 樹(shù)的全部?jī)?nèi)容。用戶(hù)響應(yīng)時(shí)間是最小值,因?yàn)樗胁僮鲀H在客戶(hù)端上執(zhí)行。您可以使用 JSON 來(lái)為應(yīng)用程序提供 Ajax 功能。
當(dāng)用戶(hù)單擊 Save 按鈕時(shí),程序?qū)⒄{(diào)用另一個(gè) JavaScript 函數(shù),該函數(shù)將把此 JSON 對(duì)象 字符串化 并將其存儲(chǔ)到程序提交到服務(wù)器上的隱藏表字段中。JSON有一個(gè) JSON.stringify()
函數(shù),該函數(shù)將獲取 JavaScript 對(duì)象作為輸入并返回字符串輸出。
服務(wù)器端必須能夠理解 JSON 形式的字符串并生成一個(gè)服務(wù)器端對(duì)象,以處理和保存數(shù)據(jù)。Web 站點(diǎn) http://www.json.org/java/index.html 提供了一個(gè) Java API,該 API 用于處理基于 Java 的應(yīng)用程序的大部分需求。