在網頁載入完成後執行——body的onload()
阿新 • • 發佈:2019-02-06
記得誰說過:前臺開發,往往一個問題糾結半天,還沒有技術含量。對這些真的是深有體會了。還是要多多積累吧。
最近遇到了一個問題:點選datagrid的行,跳轉到相應的詳情介面,並進行一系列的查詢然後將內容返回到頁面上。這時,問題就來了。
先說一下一開始我的程式碼:
datagrid行單擊事件:
<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>$("#dgApply").datagrid({ onClickRow:function(index,data){ var row=$('#dgApply').datagrid('getSelected'); var ApplyId = row.ApplyId; //跳轉頁面,並且傳遞ApplyId window.location.href = "querApplyIndex"+"?ApplyId="+ApplyId; //頁面載入完成後,執行查詢方法。 $.ajax({ type:"POST", url:'querApplyByAppId?ApplyId='+ApplyId, success:function(result){ //給相應的控制元件賦值 document.getElementById('queryApplyState').innerText=result[0].State; document.getElementById('queryApplyTime').innerText=result[0].CreateTime; document.getElementById('applyFlow').innerText=result[0].FlowName;//申請流程 document.getElementById('applyflowContent').innerText=result[0].FlowContent;//流程說明 document.getElementById('applyContent').innerText=result[0].ApplyContent; } });//---ajax結束 } })</strong></span>
注:queryApplyIndex為呼叫Controller相應的方法。
這時,設斷點走js,你會發現執行window.location.href之後,頁面是還沒有載入成功的,但是它直接就執行ajax的查詢方法,下面給相應的控制元件賦值的語句了。注意:現在頁面還沒有載入成功!!
報錯如下:
大概意思就是:我都抓不到這個id,怎麼給它的innerText賦值呢?
那然後,我們要怎麼辦呢?這可傷死腦筋了。
後來一個論壇的帖子,給予了我們靈感。這就提到了我們題目中的body的onload()
其實特別簡單。在我們要跳轉的jsp的body裡新增一個onload事件就好:
注:queryApply()直接呼叫js方法就可以。
我們只需要把原來執行查詢的ajax重新寫到queryApply()裡面就可以了。如下:
<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>function queryApply(){ //從位址列獲取地址,擷取申請id var url=document.location.href; var pos=url.indexOf("="); var pos1=pos+1; var len=url.length; var ApplyId=url.substr(pos1,len); //執行相應的查詢方法 $.ajax({ type:"POST", url:'querApplyByAppId?ApplyId='+ApplyId, success:function(result){ //給相應的控制元件賦值 document.getElementById('queryApplyState').innerText=result[0].State; document.getElementById('queryApplyTime').innerText=result[0].CreateTime; document.getElementById('applyFlow').innerText=result[0].FlowName;//申請流程 document.getElementById('applyflowContent').innerText=result[0].FlowContent;//流程說明 document.getElementById('applyContent').innerText=result[0].ApplyContent; } }); }</strong></span>
問題就解決了。前臺的一些讓我們傷腦筋的問題,往往都是一句程式碼的事,我們還是應該多多積累,慢慢來。不能因為技術含量低就忽視,慢慢積累,就會成為前臺大神。大家有什麼其他好的解決方法,請多多指教。