下面介紹JSON 方法調用的使用方法,對與JSON 方法調用,相比不能生成文本的JSON 方法調用,能生成文本的 API 自然更可取;而且,JSON 讓您能夠處理本地 JavaScript 對象,而無需為如何表示這些對象多費心思。
developerWorks AJax 資源中心
請訪問 Ajax 資源中心,這是有關 Ajax 編程模型信息的一站式中心,包括很多文檔、教程、論壇、blog、wiki 和新聞。任何關於 AJax 的新信息都能在這裡找到。
因此,JSON 的最大價值在於可以將 JavaScript 真的作為 Javascript 而非數據格式語言進行處理。您所學到的所有有關使用 JavaScript 對象的技巧都可以應用到代碼中,而無需為如何將這些對象轉變成文本而多費心思。這之後,可以進行如下所示的簡單 JSON 方法調用:
- String myObjectmyObjectInJSON = myObject.toJSONString();
將 JSON 發給服務器並不難,但卻至關重要,而且還有一些重要的選擇要做。但是,一旦決定使用JSON 方法調用,所要做的這些選擇就會十分簡單而且數量有限,所以您需要考慮和關注的事情不多。重要的是能夠將 JSON 字符串發送給服務器,而且最好能做到盡快和盡可能簡單。
將 JSON 數據發給服務器的最簡單方法是將其轉換成文本,然後以名稱/值對的值的方式進行發送。請務必注意,JSON 格式的數據是相當長的一個對象,看起來可能會如清單 1 所示:
- var people = { "programmers": [ { "firstName": "Brett", "lastName":"McLaughlin",
- "email": "brett@newInstance.com" }, { "firstName": "Jason", "lastName":"Hunter",
- "email": "jason@servlets.com" }, { "firstName": "Elliotte", "lastName":"Harold",
- "email": "elharo@Macfaq.com" } ], "authors": [ { "firstName": "Isaac",
- "lastName": "Asimov", "genre": "scIEnce fiction" }, { "firstName": "Tad",
- "lastName": "Williams", "genre": "fantasy" }, { "firstName": "Frank",
- "lastName": "Peretti", "genre": "christian fiction" } ], "musicians": [
- { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
- { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" } ] }
如果要以名稱/值對將其發送到服務器端,應該如下所示:
- var url = "organizePeople.PHP?people=" + people.toJSONString();
- XMLHttp.open("GET", url, true);
- XMLHttp.onreadystatechange = updatePage;
- XMLHttp.send(null);
這看起來不錯,但卻存在一個問題:在 JSON 方法調用中會有空格和各種字符,Web 浏覽器往往要嘗試對其繼續編譯。要確保這些字符不會在服務器上(或者在將數據發送給服務器的過程中)引起混亂,需要在 JavaScript escape()
函數中做如下添加:
- var url = "organizePeople.PHP?people=" + escape(people.toJSONString());
- request.open("GET", url, true);
- request.onreadystatechange = updatePage;
- request.send(null);