目前不分離的java項(xiàng)目世杀,有一個(gè)翻頁(yè)阀参,之前是通過url地址傳參來(lái)請(qǐng)求,數(shù)據(jù)直接返回在當(dāng)前頁(yè)面
但是后來(lái)因?yàn)樾枨蟾淖冋鞍樱瑓?shù)增加了很多蛛壳,不再適合url請(qǐng)求,于是我們換成了ajax的post請(qǐng)求
請(qǐng)求成功所刀,但是后端反的數(shù)據(jù)是一整個(gè)頁(yè)面的html衙荐,因?yàn)橹耙恢睕]有前后端分離,后端接口不會(huì)傳json浮创,這就讓我很方了
為了不大改忧吟,只有看前端有什么方法重新渲染了
既然能拿到頁(yè)面,那我最開始的想法就是直接替換這個(gè)頁(yè)面的內(nèi)容
document.write()
沒錯(cuò)就是這樣斩披,但后面遇到了兩個(gè)小坑
//第一次的代碼
$.ajax({
url:'<%=request.getContextPath()%>/project/proList',
type:'post',
dataType:'json',
data:data,
success : function(data){
document.write(data.responseText);
}
})
這樣寫溜族,發(fā)現(xiàn)什么都不對(duì),最后根本進(jìn)入不了success 垦沉,
然后我就寫了error煌抒,想看看是哪里出錯(cuò)
//調(diào)試
$.ajax({
url:'<%=request.getContextPath()%>/project/proList',
type:'post',
dataType:'json',
data:data,
success : function(data){
document.write(data.responseText);
},
error:function(data){
console.log(data)
}
})
這次意外發(fā)現(xiàn)請(qǐng)求最后是進(jìn)入了error,并且打印出來(lái)后端反的html頁(yè)面
查了寫資料厕倍,原來(lái)后端直接反頁(yè)面寡壮,數(shù)據(jù)就不是json,自然就會(huì)異常進(jìn)入error,既然后端沒辦法改讹弯,那我們也只有曲線救國(guó)况既,不走success 就不走,我們就用error渲染
//繼續(xù)調(diào)試
$.ajax({
url:'<%=request.getContextPath()%>/project/proList',
type:'post',
dataType:'json',
data:data,
success : function(data){
//因?yàn)榉祷亓怂械膆tml數(shù)據(jù)组民,不是json格式坏挠,所以不進(jìn)入success而是進(jìn)入error
},
error:function(data){
document.write(data.responseText);
}
})
這樣寫,OK邪乍,數(shù)據(jù)出來(lái)降狠,可以翻頁(yè)了,但是問題又來(lái)了庇楞,我們翻一頁(yè)正常榜配,多次翻頁(yè)后會(huì)發(fā)現(xiàn)之前的頁(yè)面內(nèi)容還在,一直在疊加吕晌,這樣可不行哦
度娘了下
如果document.write()在DOMContentLoaded或load事件的回調(diào)函數(shù)中蛋褥,當(dāng)文檔加載完成,
則會(huì)先清空文檔(自動(dòng)調(diào)用document.open())睛驳,再把參數(shù)寫入body內(nèi)容的開頭烙心。
在異步引入的js和DOMContentLoaded或load事件的回調(diào)函數(shù)中運(yùn)行document.write()膜廊,
運(yùn)行完后,最好手動(dòng)關(guān)閉文檔寫入(document.close())淫茵。
方法找到爪瓜,繼續(xù)修改
$.ajax({
url:'<%=request.getContextPath()%>/project/proList',
type:'post',
dataType:'json',
data:data,
success : function(data){
//因?yàn)榉祷亓怂械膆tml數(shù)據(jù),不是json格式匙瘪,所以不進(jìn)入success而是進(jìn)入error
},
error:function(data){
document.write(data.responseText);
document.close();
}
})
大功告成
自從前后端不分離處理頁(yè)面后铆铆,我深深感受到了坑,但沒辦法丹喻,為了我熱愛的工作.........