使用簡單的JSON 方法調(diào)用進(jìn)行說明調(diào)查
下面介紹JSON 方法調(diào)用的使用方法,對與JSON 方法調(diào)用,相比不能生成文本的JSON 方法調(diào)用,能生成文本的 API 自然更可取;而且,JSON 讓您能夠處理本地 JavaScript 對象,而無需為如何表示這些對象多費(fèi)心思。
developerWorks Ajax 資源中心
請?jiān)L問 Ajax 資源中心,這是有關(guān) Ajax 編程模型信息的一站式中心,包括很多文檔、教程、論壇、blog、wiki 和新聞。任何關(guān)于 Ajax 的新信息都能在這里找到。 #t#
XML 也可以提供文本方面的類似益處,但用于將 JavaScript 對象轉(zhuǎn)換成 XML 的幾個現(xiàn)有 API 沒有 JSON API 成熟;有時,您必須在創(chuàng)建和處理 JavaScript 對象時格外謹(jǐn)慎以確保所進(jìn)行的處理能與所選用的 XML 會話 API 協(xié)作。但對于JSON 方法調(diào)用,情況就大不相同:它能處理幾乎所有可能的對象類型,并會返回給您一個非常好的 JSON 數(shù)據(jù)表示。
因此,JSON 的***價值在于可以將 JavaScript 真的作為 JavaScript 而非數(shù)據(jù)格式語言進(jìn)行處理。您所學(xué)到的所有有關(guān)使用 JavaScript 對象的技巧都可以應(yīng)用到代碼中,而無需為如何將這些對象轉(zhuǎn)變成文本而多費(fèi)心思。這之后,可以進(jìn)行如下所示的簡單 JSON 方法調(diào)用:
- String myObjectmyObjectInJSON = myObject.toJSONString();
將 JSON 發(fā)給服務(wù)器并不難,但卻至關(guān)重要,而且還有一些重要的選擇要做。但是,一旦決定使用JSON 方法調(diào)用,所要做的這些選擇就會十分簡單而且數(shù)量有限,所以您需要考慮和關(guān)注的事情不多。重要的是能夠?qū)?JSON 字符串發(fā)送給服務(wù)器,而且***能做到盡快和盡可能簡單。
將 JSON 數(shù)據(jù)發(fā)給服務(wù)器的最簡單方法是將其轉(zhuǎn)換成文本,然后以名稱/值對的值的方式進(jìn)行發(fā)送。請務(wù)必注意,JSON 格式的數(shù)據(jù)是相當(dāng)長的一個對象,看起來可能會如清單 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" } ] }
如果要以名稱/值對將其發(fā)送到服務(wù)器端,應(yīng)該如下所示:
- var url = "organizePeople.php?people=" + people.toJSONString();
- xmlHttp.open("GET", url, true);
- xmlHttp.onreadystatechange = updatePage;
- xmlHttp.send(null);
這看起來不錯,但卻存在一個問題:在 JSON 方法調(diào)用中會有空格和各種字符,Web 瀏覽器往往要嘗試對其繼續(xù)編譯。要確保這些字符不會在服務(wù)器上(或者在將數(shù)據(jù)發(fā)送給服務(wù)器的過程中)引起混亂,需要在 JavaScript escape()
函數(shù)中做如下添加:
- var url = "organizePeople.php?people=" + escape(people.toJSONString());
- request.open("GET", url, true);
- request.onreadystatechange = updatePage;
- request.send(null);