下面介紹說明處理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 頭中亦可以看出),所以在將數據發送到服務器時無需太費心。
一旦您編寫完客戶端 JavaScript 代碼、允許用戶與 Web 表單和 Web 頁的交互、收集發送給服務器端程序以做處理所需的信息,此時,服務器就成為了應用程序(如果調用了異步使用的服務器端程序,則可能是我們認為的所謂的 “AJax 應用程序”)中的主角。
在此時,您在客戶端所做的選擇(比如使用 JavaScript 對象,然後將其轉換成 JSON 字符串)必須要與服務器端的選擇相匹配,比如使用哪個 API 解碼 JSON 數據。。。。。
不管在服務器端使用何種語言,在服務器端處理JSON 基本上就需要兩個步驟。
以上處理JSON差不多就是目前所應了解的大致內容了。接下來,我們對每個步驟進行較為詳細的介紹。