以前寫項目,老是用重定向或請求轉發,致使每作一步動做就會刷新頁面,客戶體驗很差,並且效率低下,這種問題可使用ajax來有效的解決此類問題的發生。javascript
我使用的框架:Spring bootcss
數據庫:mysqlhtml
環境:JDK1.8java
用的編程工具:eclipsemysql
1、當咱們第一次去訪問一個頁面時,用重定向直接跳轉頁面,不去作任何操做,這樣能夠減小頁面跳轉的卡頓ajax
@RequestMapping("/show")
public ModelAndView ashow(){
return new ModelAndView("/accountaudit");
}sql
2、頁面其餘信息的展現,則所有使用異步,而頁面的初始化展現,則使用異步,第一次訪問頁面時默認調此異步,關於使用同步仍是異步,要看具體的狀況。 數據庫
這個是異步傳的參數編程
var params = {
kaishi : "",
jieshu : "",
zuixiao : "",
zuida : "",
state : "",
homeAndAbroad : "",
payee : "",
pageNum : 1 //這個是默認當前頁
};json
默認第一次訪問調用
getDatalist()
function getDatalist(){
//異步
$.post("/audits/selectuserParam", params, function(data) {
去把對象轉成json格式
data = eval(data);
拼接,描述列字符串
var htmlStr = "<tr>" +
"<th width='3%'>序號</th>" +
"<th width='17%'>交易日期</th>" +
"<th width='10%'>幣種及金額(元)</th>" +
"<th width='15%'>合同號</th>" +
"<th width='20%'>收款方</th>" +
"<th width='10%'>境內/境外</th>" +
"<th width='10%'>審覈狀態</th>" +
"<th width='15%' colspan='3'>操做</th>" +
"</tr>";
這是一個Spring boot 裏作的一個傳輸數據的處理,若是你不知道這個的話,能夠忽略不寫,大體意思是,data裏有一屬性,若是==1就說明後臺到前臺傳輸是正常的。
if(data.code == 1){
你傳的屬性都在,data裏的,data屬性裏
var _list = data.data;
循環這個list
for(var i = 0; i < _list.length; i ++){
把集合遍歷平成字符串
htmlStr += "<tr>";
htmlStr += "<td>" + (i+1) + "</td>";
htmlStr += "<td>" + _list[i].startDate + "</td>";
htmlStr += "<td>" + _list[i].money + "</td>";
htmlStr += "<td>" + _list[i].contractNumber + "</td>";
htmlStr += "<td>" + _list[i].payeeName + "</td>";
htmlStr += "<td>" + _list[i].domesticOrOverseas + "</td>";
if(_list[i].stateId==1005){
htmlStr += "<td>銀行審覈中</td>";
htmlStr += "<td><a class=\"w_a1\" onclick=\"selects(" + _list[i].id + ",'" + _list[i].domesticOrOverseas + "')\">查看</a></td>";
htmlStr += "<td><a class=\"w_sp1\" onclick=\"yess(" + _list[i].id + ")\" ><img src=\"../img/audit/w_icon1.png\"></a></td>";
htmlStr += "<td><a class=\"w_sp4\" onclick=\"nos(" + _list[i].id + ")\"><img src=\"../img/audit/w_icon2.png\"></a></td>";
}else if(_list[i].stateId==1003){
htmlStr += "<td>" + _list[i].stateName + "</td>";
htmlStr += "<td><a class=\"w_a1\" href=\"#\" onclick=\"selects(" + _list[i].id + ",'" + _list[i].domesticOrOverseas + "')\" >查看</a></td>";
htmlStr += "<td colspan=\"2\"><a class=\"w_sp1\" onclick=\"settle(" + _list[i].id + ")\" >結算</a></td>";
htmlStr += "<td></td>";
}else{
htmlStr += "<td>" + _list[i].stateName + "</td>";
htmlStr += "<td><a class=\"w_a1\" onclick=\"selects(" + _list[i].id + ",'" + _list[i].domesticOrOverseas + "')\">查看</a></td>";
htmlStr += "<td></td>"; htmlStr += "<td></td>";
}
htmlStr += "</tr>";
}
}else{
這個也是不用管,這個是若是data.code != 1 就報一個自定義的錯
alert(data.msg);
}
把你拼的http字符串賦到制定位置
$("#zsList").html(htmlStr);
});
}
後臺沒有什麼特殊的,和之前同樣正常寫,惟一要注意的地方是
/**
* 描述:展示
* @author mir cheng
*
* @return
*/
@RequestMapping("/selectuserParam")
@ResponseBody //ajax要加是這個
public Result<?> selectuserParam(AuditMCVo amc,HttpServletRequest request){ //這個返回類型是本身封裝的,有data,msg,code
HttpSession session = request.getSession();
Object staffObj = session.getAttribute("token");
StaffVo staff = ObjToObj.objToVoByRem(staffObj, StaffVo.class);
amc.setBank(staff.getParentId());
amc.setPageCount(5);
/* int totalCount = LSC.totalCounts(amcv);
amcv.setTotalCount(totalCount);*/
amc.setHh((amc.getPageNum() - 1) * amc.getPageCount());
List<AuditVo> uvo = LSC.indexselect(amc);
for (AuditVo auditVo : uvo) {
System.out.println(auditVo);
}
return ResultUtil.ok(uvo);//也是本身封裝的,你能夠無論這個,之前怎麼寫還怎麼寫
}
還有一個查詢總頁數
var pages = {
num: 1, //頁碼數
startnum: 1, //指定頁碼
elem: $('#page1'), //指定的元素,這個是div的id
callback: function(n){ //回調函數
params.pageNum = n;
getDatalist()
}
}
//獲取總頁數
getPageCount()
function getPageCount(){
$.post("/audits/getpagecount",params,function(data) {
data = eval(data)
pages.num = data.data;
Page(pages);//調用方法,這個調用的方法是js裏的方法
});
}
這是分頁組件,網上能夠找的到
<script type="text/javascript" th:src="@{/js/registercheck/pager.js}"> </script>
<link rel="stylesheet" th:href="@{/css/user/pager.css}"/>
這個是分頁的div
<div class="v1-3">
<ul class="pagination" id="page1"> </ul>
<div class="pageJump">
<span>跳轉到</span>
<input type="text"/>
<span>頁</span>
<button type="button" class="button">肯定</button>
</div>
</div>
這是兩個第一次執行的默認訪問的方法,若是其餘異步跑完要更新頁面展現的數據,只須要調用方法便可,從而減小的頁面的刷新,若是有其餘問題,敬請期待,關注吆