上一次我們使用SpringMVC實現(xiàn)了一個表單提交應(yīng)用烟零,我們的表單長成這個樣子:
如果你在線填寫過諸如"XXX市XXX職位申請"的話醉锄,那么你就會知道網(wǎng)頁上需要的數(shù)據(jù)有多少偿曙,上三代都要被查州既,畢竟這是一個數(shù)據(jù)時代嘛∶涨ⅲ現(xiàn)在假設(shè)今晚就是申請表填寫的deadline,但你發(fā)現(xiàn)你家的網(wǎng)不太好吴叶,刷新一次網(wǎng)頁需要一分鐘褥琐,這時候你填好了所有數(shù)據(jù),點提交按鈕晤郑,一分鐘之后敌呈,因為時間匆忙贸宏,網(wǎng)頁告訴你:密碼格式不多,好磕洪,改一下吭练,再次提交,地址格式不對析显。鲫咽。。再來一分鐘谷异,郵箱不小心寫錯了分尸。。歹嘹。此處省略一萬次提交箩绍。。尺上。材蛛。
這時候你就像,我去怎抛,能不能實時反饋氨翱浴?
不知道你什么時候開始使用的百度马绝,有沒有發(fā)現(xiàn)從什么時候開始豆赏,搜索框可以試試動態(tài)根據(jù)你的輸入展示搜索結(jié)果,以前可是沒有的富稻,那這個是怎么實現(xiàn)的呢掷邦?
不錯,這個就是Ajax唉窃,AJAX = Asynchronous JavaScript and XML(異步的 JavaScript 和 XML)耙饰。這是Ajax的官方解釋,其實它的工作機制是這樣的:
js實時處理你在網(wǎng)頁上的動作纹份,一旦觸發(fā)苟跪,就將需要的數(shù)據(jù)發(fā)送到后臺進行處理,后臺處理之后實時反饋到網(wǎng)頁上蔓涧。
那么前臺和后臺數(shù)據(jù)交互的載體是什么呢件已?不再是xml文件,而是json數(shù)據(jù)元暴。
現(xiàn)在我們來分別看看前臺和后臺是怎么工作的篷扩。
先看看前臺部分:
對應(yīng)的代碼:
這里給登錄按鈕一個id,方便引用茉盏,因為我們希望在點擊登錄之后在后臺驗證或是創(chuàng)建用戶鉴未。
那么這個點按鈕的動作怎么觸發(fā)呢枢冤?
$(document).ready(function()這句話讓頁面stand by,隨時準(zhǔn)備響應(yīng)網(wǎng)頁上的動作铜秆。
$("#login").click(function()這里引用上面說的button id淹真,給這個動作加了一個click動作,相當(dāng)于onclick屬性连茧,然后用$.ajax表示這是一個ajax核蘸,我們來看看里面的主體都是些啥:
url:"test/testJSON.do",表明這個動作的響應(yīng)url(controller里設(shè)置的RequestMapping)
type:"POST",(提交模式)
dataType:"json",(數(shù)據(jù)格式)
contentType:"application/json;charset=UTF-8",(內(nèi)容格式)
data:JSON.stringify({(構(gòu)造json格式的數(shù)據(jù))
userName:$("#userName").val(),
userPassword:$("#userPassword").val()
})
圖6后面的部分是成功和失敗的提示。
緊接著你肯定要問啸驯,后臺怎么接受數(shù)據(jù)的客扎?我們來看看:
可以看到,前臺傳送的json數(shù)據(jù)的userName:$("#userName").val(),key值(userName)必須和User里定義的一樣罚斗,這樣后臺就能通過@ResponseBody的到轉(zhuǎn)換后的User對象徙鱼,就能拿到一個完整的User對象,之后的操作就和上一篇文章里一樣了惰聂。