處理JSON時注意的相關問題進行說明描述
下面介紹說明處理JSON只是常規的文本數據所以在將數據發送到服務器時無需太費心,當決定使用 POST 請求將 JSON 數據發送給服務器時,并不需要對代碼進行大量更改,如下所示:
- var url = "organizePeople.php?timeStamp=" + new Date().getTime();
- request.open("POST", url, true);
- request.onreadystatechange = updatePage;
- request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
- request.send(people.toJSONString());
這些代碼中的大部分,您都在 “ 掌握 Ajax,第 3 部分:Ajax 中的高級請求和響應” 中見過,應該比較熟悉,第 3 部分重點介紹了如何發送 POST 請求。請求使用處理JSON而非 GET 打開,而且 Content-Type 頭被設置為讓服務器預知它能得到何種數據。
在這種情況下,即為 application/x-www-form-urlencoded,它讓服務器知道現在發送的是文本,正如它從常規的 HTML 表單中得到的一樣。另一個簡單提示是 URL 的末尾追加了時間。
這就確保了請求不會在它第一次被發送后即緩存,而是會在此方法每次被調用后重新創建和重發;此 URL 會由于時間戳的不同而稍微有些不同。這種技巧常被用于確保到腳本的 POST 每次都會實際生成新請求且 Web 服務器不會嘗試緩存來自服務器的響應。
不管使用 GET 還是 POST,關鍵之處在于 JSON 就只是文本。由于不需要特殊編碼而且每個服務器端腳本都能處理文本數據,所以可以輕松利用 JSON 并將其應用到服務器。假如 JSON 是二進制格式的或是一些怪異的文本編碼,情況就不這么簡單了;幸好處理JSON只是常規的文本數據(正如腳本能從表單提交中所接收到的數據,在 POST 段和 Content-Type 頭中亦可以看出),所以在將數據發送到服務器時無需太費心。#t#
一旦您編寫完客戶端 JavaScript 代碼、允許用戶與 Web 表單和 Web 頁的交互、收集發送給服務器端程序以做處理所需的信息,此時,服務器就成為了應用程序(如果調用了異步使用的服務器端程序,則可能是我們認為的所謂的 “Ajax 應用程序”)中的主角。
在此時,您在客戶端所做的選擇(比如使用 JavaScript 對象,然后將其轉換成 JSON 字符串)必須要與服務器端的選擇相匹配,比如使用哪個 API 解碼 JSON 數據。。。。。
不管在服務器端使用何種語言,在服務器端處理JSON 基本上就需要兩個步驟。
- 針對編寫服務器端程序所用的語言,找到相應的 JSON 解析器/工具箱/幫助器 API。
- 使用 JSON 解析器/工具箱/幫助器 API 取得來自客戶機的請求數據并將數據轉變成腳本能理解的東西。
以上處理JSON差不多就是目前所應了解的大致內容了。接下來,我們對每個步驟進行較為詳細的介紹。