|
這里的ajax可不是大名鼎鼎的ajax俱樂部, 這四個字母在這里Asynchronous JavaScript and XML的縮寫。通俗地描述這項技術(shù)就是:用 JavaScript 向服務(wù)器獲取數(shù)據(jù),然后更新網(wǎng)頁的局部,而不是刷新整個網(wǎng)頁。 這項技術(shù)非常適合用來開發(fā)以瀏覽器為客戶端的系統(tǒng)的界面,使用ajax給用戶帶來的更好的體驗,他們不會感覺到用瀏覽器開發(fā)的客戶端與桌面程序有什么差別。 ajax使用了比較多的javacript,并需要訪問很多dom對象,這常常給跨瀏覽器訪問帶來困擾。但假如你小心應(yīng)對,還是容易解決這個問題的。比如,你想從服務(wù)器段獲得一些數(shù)據(jù),你必然要用到xmlhttp,為了讓程序瀏覽器無關(guān),你可以這樣創(chuàng)建xmlhttp對象: //for IE var xmlhttp=false; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } //for firefox if (!xmlhttp && typeof XMLHttpRequest!=‘undefined‘) { xmlhttp = new XMLHttpRequest(); } 在很多的ajax范例中,開發(fā)者都是用xmlhttp從服務(wù)器端獲得一個xml數(shù)據(jù),然后轉(zhuǎn)換成javascript可觸及的對象,再用js繪制到document中。但我覺得這并非唯一選項,我甚至覺得是多此一舉!為什么不直接傳遞js對象呢?在我開發(fā)的系統(tǒng)中,xmlhttp從服務(wù)器上獲得的是代表js對象的字符串。假如我要傳送一個人員列表,我會在服務(wù)器上輸出: [{id:1,name:"hexiaodong"},{id:2,name:"mary"},{id:3,name:"name"},...]} 然后在瀏覽器上用js獲得這個字符串所代表的對象: var returned = xmlhttp.responseText; var obj = eval(returned ); 接著,你就可以這樣訪問: var person1 = obj[0]; var person2 = obj[1]; alert(person1.id); alert(person1.name); 我覺得這樣做比傳遞xml文檔直接一些,不必通過轉(zhuǎn)換可以讓js直接訪問數(shù)據(jù),而且是通過對象導(dǎo)航來訪問的,爽一個字。 ajax最后一環(huán),就是通過dom對象繪制界面,這方面我也不是很精通,每次對著msdn畫瓢唄。 |
|
|