Python Django 進(jìn)階之AJAX(Python是什么意思)
AJAX準(zhǔn)備知識(shí):JSON

什么是 JSON ?
JSON 指的是 JavaScript 對(duì)象表示法(JavaScript?Object?Notation)
JSON 是輕量級(jí)的文本數(shù)據(jù)交換格式
JSON 獨(dú)立于語言?*
JSON 具有自我描述性,更易理解
*?JSON 使用 JavaScript 語法來描述數(shù)據(jù)對(duì)象,但是 JSON 仍然獨(dú)立于語言和平臺(tái)。JSON 解析器和 JSON 庫(kù)支持許多不同的編程語言。
合格的json對(duì)象:
["one",?"two",?"three"] {?"one":?1,?"two":?2,?"three":?3?} {"names":?["張三",?"李四","王五"]?} [?{?"name":?"張三"},{"name":?"李四"},{"name":?"王五"}?]
不合格的json對(duì)象:
{?name:?"張三",?'age':?32?}??//?屬性名必須使用雙引號(hào) [32,?64,?128,?0xFFF]?//?不能使用十六進(jìn)制值 {?"name":?"張三",?"age":?undefined?}??//?不能使用undefined {?"name":?"張三", ??"birthday":?new?Date('Fri,?26?Aug?2011?07:13:10?GMT'), ??"getName":??function()?{return?this.name;}??//?不能使用函數(shù)和日期對(duì)象 }
stringify與parse方法
JavaScript中關(guān)于JSON對(duì)象和字符串轉(zhuǎn)換的兩個(gè)方法:
JSON.parse(): 用于將一個(gè) JSON 字符串轉(zhuǎn)換為 JavaScript 對(duì)象
JSON.parse('{"name":"yuchuan"}'); JSON.parse('{name:"yuchuan"}')?;???//?錯(cuò)誤 JSON.parse('[18,undefined]')?;???//?錯(cuò)誤
JSON.stringify(): 用于將 JavaScript 值轉(zhuǎn)換為 JSON 字符串。
JSON.stringify({"name":"yuchuan"})
和XML的比較
JSON 格式于2001年由 Douglas Crockford 提出,目的就是取代繁瑣笨重的 XML 格式。
JSON 格式有兩個(gè)顯著的優(yōu)點(diǎn):書寫簡(jiǎn)單,一目了然;符合 JavaScript 原生語法,可以由解釋引擎直接處理,不用另外添加解析代碼。所以,JSON迅速被接受,已經(jīng)成為各大網(wǎng)站交換數(shù)據(jù)的標(biāo)準(zhǔn)格式,并被寫入ECMAScript 5,成為標(biāo)準(zhǔn)的一部分。
XML和JSON都使用結(jié)構(gòu)化方法來標(biāo)記數(shù)據(jù),下面來做一個(gè)簡(jiǎn)單的比較。
用XML表示廣西部分市縣數(shù)據(jù)如下:
XML格式數(shù)據(jù):
用JSON表示如下:
JSON格式數(shù)據(jù):
{ ????"name":?"廣西", ????"province":?[{ ????????"name":?"南寧", ????????"cities":?{ ????????????"city":?["清秀",?"西鄉(xiāng)塘"] ????????} ????},?{ ????????"name":?"百色", ????????"cities":?{ ????????????"city":?["凌云",?"樂業(yè)",?"田東"] ????????} ????},?{ ????????"name":?"河池", ????????"cities":?{ ????????????"city":?["鳳山",?"巴馬"] ????????} ????},?{ ????????"name":?"桂林", ????????"cities":?{ ????????????"city":?["陽(yáng)朔"] ????????} ????}] }
由上面的兩端代碼可以看出,JSON 簡(jiǎn)單的語法格式和清晰的層次結(jié)構(gòu)明顯要比 XML 容易閱讀,并且在數(shù)據(jù)交換方面,由于 JSON 所使用的字符要比 XML 少得多,可以大大得節(jié)約傳輸數(shù)據(jù)所占用得帶寬。
AJAX簡(jiǎn)介
AJAX(Asynchronous Javascript And XML)翻譯成中文就是“異步的Javascript和XML”。即使用Javascript語言與服務(wù)器進(jìn)行異步交互,傳輸?shù)臄?shù)據(jù)為XML(當(dāng)然,傳輸?shù)臄?shù)據(jù)不只是XML)。
AJAX 不是新的編程語言,而是一種使用現(xiàn)有標(biāo)準(zhǔn)的新方法。
AJAX 最大的優(yōu)點(diǎn)是在不重新加載整個(gè)頁(yè)面的情況下,可以與服務(wù)器交換數(shù)據(jù)并更新部分網(wǎng)頁(yè)內(nèi)容。(這一特點(diǎn)給用戶的感受是在不知不覺中完成請(qǐng)求和響應(yīng)過程)
AJAX 不需要任何瀏覽器插件,但需要用戶允許JavaScript在瀏覽器上執(zhí)行。
同步交互:客戶端發(fā)出一個(gè)請(qǐng)求后,需要等待服務(wù)器響應(yīng)結(jié)束后,才能發(fā)出第二個(gè)請(qǐng)求;
異步交互:客戶端發(fā)出一個(gè)請(qǐng)求后,無需等待服務(wù)器響應(yīng)結(jié)束,就可以發(fā)出第二個(gè)請(qǐng)求。
示例
頁(yè)面輸入兩個(gè)整數(shù),通過AJAX傳輸?shù)胶蠖擞?jì)算出結(jié)果并返回。
HTML部分代碼:
?? ?? ?? ??