Ajax異步請求(重渲染DOM元素時,如何自動調用並執行JS自定義函數【含代碼】)- 案例篇
效果截圖:
重要代碼:
/*具體函數定義,如下*/
//文章list區域:拼接渲染
var str = '';
for(var i=0;i<group.length;i++){
var imgurl = group[i].thumbnail;
if(imgurl != ''){
str += '<li class="mui-table-view-cell mui-media line">'
+'<a href="http://192.168.0.109:8080/cmsarticle/'+'1/' + id + '/' + group[i].content_id+'.html">'
+'<img class="mui-media-object mui-pull-left scyl-img" src="'
+'http://192.168.0.109:8081/ofcms-admin'+imgurl
+'">'
+'<div class="mui-media-body">'
+'<p class="scyl-title">'
+group[i].title_name+'</p>'
+'<p class="scyl-uptime">'+getLocalTime(group[i].create_time)+'</p>'
+'</div></a>'
+'</li>';
} else {
str += '<li class="mui-table-view-cell mui-media line">'
+'<a href="http://192.168.0.109:8080/cmsarticle/'+'1/' + id + '/' + group[i].content_id+'.html">'
+'<img class="mui-media-object mui-pull-left scyl-img" src="static.docs.v1.1/images/scyl_2/default.jpg">'
+'<div class="mui-media-body">'
+'<p class="scyl-title">'
+group[i].title_name+'</p>'
+'<p class="scyl-uptime">'+getLocalTime(group[i].create_time)+'</p>'
+'</div></a>'
+'</li>';
}
}
/* AJAX異步渲染DOM的時候,需要同步執行的函數*/
//轉換日期格式
function getLocalTime(nS) {
return new Date(parseInt(nS) ).toLocaleString().replace(/:\d{1,2}$/,' ');
}
附:全部HTML代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="Description" content="考試加油站,特服寶典,特種作業學習平臺"/>
<meta name="Keywords" content="考試加油站,特服寶典,特種作業學習平臺"/>
<meta name="author" content="[email protected]"/>
<title>考試加油站</title>
<link rel="stylesheet" href="static.docs.v1.1/plugins/mui/css/mui.min.css">
<!--mui下拉導航組件 · 動畫-->
<link rel="stylesheet" type="text/css" href="static.docs.v1.1/plugins/mui/css/nav.animate.css"/>
<!--考試加油站-->
<link rel="stylesheet" type="text/css" href="static.docs.v1.1/css/m_shicaolilun.css"/>
<style type="text/css">
#tagjsp{
display: -webkit-box;
display: -webkit-flex;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
-webkit-box-pack: justify;
-webkit-justify-content: flex-start;
justify-content: flex-start;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
}
</style>
</head>
<body>
<header class="mui-bar mui-bar-nav">
<a class="mui-action-back mui-btn mui-btn-blue mui-btn-link mui-btn-nav mui-pull-left"><span class="mui-icon mui-icon-left-nav"></span>返回</a>
<a id="icon-menu" class="mui-action-menu mui-icon mui-icon-bars mui-pull-right"></a>
<h1 class="mui-title">考試加油站</h1>
</header>
<nav class="mui-bar mui-bar-tab nav-page" id="fixedpage">
<!--分頁-->
<div class="mui-content-padded mgtb0">
<ul class="mui-pager">
<li class="bd0"><a onclick="prePageFun()">上一頁</a></li>
<li class="on"><a>1</a></li>
<li class="bd0"><a onclick="nextPageFun()">下一頁</a></li>
</ul>
</div>
</nav>
<div class="mui-content pdb60" style="background: none;">
<!--選項卡-->
<div style="position: fixed;top: 50px;left: 0;width: 100%;z-index: 10;">
<div id="segmentedControl" class="mui-segmented-control mui-segmented-control-inverted sc-tabs">
<a class="mui-control-item navli mui-active" onclick="categoryFun(26,'category',0,'高壓電工')" id="category_26">報考指南</a>
</div>
</div>
<!--分類導航 · 位置固定-->
<div class="mui-card scroll-gz" style="border-radius: 0;margin: 0;box-shadow:none;position: fixed;top: 100px;left: 0;z-index: 10;width: 100%;">
<div class="mui-card-footer bfnone overflw-x" id="tagjsp">
<a class="mui-btn gzbg" onclick="tagFun(28,'tag',0,'高壓電工')" id="gzbg_28">考試動態</a>
</div>
</div>
<!--卡片區域-->
<div style="padding-top: 95px;">
<div id="article-ul" class="mui-control-content tab-pane mui-active">
<ul class="mui-table-view bfnone">
<li class="mui-table-view-cell mui-media line">
<a href="">
<img class="mui-media-object mui-pull-left scyl-img" src="static.docs.v1.1/images/scyl_2/01.jpg">
<div class="mui-media-body">
<p class="scyl-title">新手學習電焊初期的 焊接技巧</p>
<p class="scyl-uptime">2018.05.23</p>
</div>
</a>
</li>
</ul>
</div>
<!--<div style="width: 100%;height: auto;">
<img src="static.docs.v1.1/images/qst-dflt.png" style="margin: 0 auto;width: 100%;height: auto;"/>
<p style="text-align: center;color: #333333;font-size: 18px;">暫無數據</p>
</div>-->
</div>
</div>
<div id="menu-wrapper" class="menu-wrapper hidden">
<div id="menu" class="menu line0">
<ul class="mui-table-view mui-table-view-inverted">
<li class="navlink-btns">
<a href="index - 舊版 - 新升級.html">首頁</a>
</li>
<li class="navlink-btns">
<a href="#1">試題查詢</a>
<a href="#2">模擬考試</a>
<a href="#3">全真題庫</a>
<a href="m_shicaolilun.html">實操理論</a>
<a href="#5">易錯題庫</a>
<a href="#6">做題排行</a>
<a href="#6">課件講義</a>
</li>
<li class="navlink-btns">
<a href="m_meiriyilian.html">每日一練</a>
<a href="#2">智能組卷</a>
<a href="m_tglyc.html">通過率預測</a>
<a href="m_kaoshijiayouzhan.html">考試加油站</a>
</li>
<li class="navlink-btns">
<a href="#1">我的錯題</a>
<a href="#2">我的收藏</a>
<a href="#3">考試記錄</a>
</li>
<li class="navlink-btns">
<a href="m_kaoshijiayouzhan.html?#m_bkzn">報考指南</a>
<a href="m_kaoshijiayouzhan.html?#m_hyzx">行業資訊</a>
</li>
<li class="nav-grid-3">
<ul class="mui-table-view mui-grid-view mui-grid-9">
<li class="mui-table-view-cell mui-media mui-col-xs-3 mui-col-sm-3">
<a href="">
<span class="mui-icon slt_stcx"></span>
<div class="mui-media-body">試題查詢</div>
</a>
</li>
<li class="mui-table-view-cell mui-media mui-col-xs-3 mui-col-sm-3">
<a href="">
<span class="mui-icon slt_mnks"></span>
<div class="mui-media-body">模擬考試</div>
</a>
</li>
<li class="mui-table-view-cell mui-media mui-col-xs-3 mui-col-sm-3">
<a href="">
<span class="mui-icon slt_qztk"></span>
<div class="mui-media-body">全真題庫</div>
</a>
</li>
<li class="mui-table-view-cell mui-media mui-col-xs-3 mui-col-sm-3">
<a href="m_shicaolilun.html">
<span class="mui-icon slt_scll"></span>
<div class="mui-media-body">實操理論</div>
</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div id="menu-backdrop" class="menu-backdrop bghalf"></div>
<script src="static.docs.v1.1/plugins/mui/js/mui.min.js"></script>
<!--mui下拉導航組件:點擊切換 · 跳轉鏈接-->
<script src="static.docs.v1.1/plugins/mui/js/mui_link.js"></script>
<!--邏輯專屬-->
<script src="static.docs.v1.1/js/jquery.min.3.1.0.js" type="text/javascript" charset="utf-8"></script>
<!--文章刷新-->
<script type="text/javascript">
var linkurl = 'http://192.168.0.109:8080/cmsarticle/getColumnArticles.do';
var tagurl = 'http://192.168.0.109:8080/cmsarticle/menu.do';
var articleurl = 'http://192.168.0.109:8080/cmsarticle/getLabelArticles.do';
var pageNum=1, sizeNum=2, tagtype= 'category', eq=0, thisid=26, keywd='高壓電工'; // 默認點擊標籤類型
window.onload = categoryFun(thisid,tagtype,eq,keywd,pageNum,sizeNum); //參數1~3:id,欄目層級,文章顯示初始化eq值
//上一頁
function prePageFun(id,pageNum,sizeNum,linkMark){
nextPageFun(id,pageNum,sizeNum)
}
//下一頁
function nextPageFun(id,pageNum,sizeNum,linkMark){
if(linkMark==1){
linkMark=linkurl;
} else {
linkMark=articleurl;
}
$.ajax({
type:"get", //提交方式
data:{ "id" : id,"keyWord": keywd,"page":pageNum,"size":sizeNum}, //查詢的參數
url: linkMark, //提交的路徑
dataType:"json", //返回的類型 是Text文本
success:function(data){
// console.log(data);
if(data==0) {
console.log("不可以使用");
}else{
//獲取需要的數據
var group = data.data ;
console.log(data);
//文章list區域:拼接渲染
var str = '';
for(var i=0;i<group.length;i++){
var imgurl = group[i].thumbnail;
if(imgurl != ''){
str += '<li class="mui-table-view-cell mui-media line">'
+'<a href="http://192.168.0.109:8080/cmsarticle/'+'1/' + id + '/' + group[i].content_id+'.html">'
+'<img class="mui-media-object mui-pull-left scyl-img" src="'
+'http://192.168.0.109:8081/ofcms-admin'+imgurl
+'">'
+'<div class="mui-media-body">'
+'<p class="scyl-title">'
+group[i].title_name+'</p>'
+'<p class="scyl-uptime">'+getLocalTime(group[i].create_time)+'</p>'
+'</div></a>'
+'</li>';
} else {
str += '<li class="mui-table-view-cell mui-media line">'
+'<a href="http://192.168.0.109:8080/cmsarticle/'+'1/' + id + '/' + group[i].content_id+'.html">'
+'<img class="mui-media-object mui-pull-left scyl-img" src="static.docs.v1.1/images/scyl_2/default.jpg">'
+'<div class="mui-media-body">'
+'<p class="scyl-title">'
+group[i].title_name+'</p>'
+'<p class="scyl-uptime">'+getLocalTime(group[i].create_time)+'</p>'
+'</div></a>'
+'</li>';
}
}
//增加查看全部
if(group.length == 0){
str="";
str += '<li class="article-a-li-more">'
+'<a class="mui-badge a-more">暫無數據</a>'
+'</li>';
} else {
}
str = '<ul class="mui-table-view bfnone">'
+str
+'</ul>';
//list拼接渲染
$('#article-ul').html(str);
//覆寫上一頁下一頁
var pagestr = '';
var prePage = data.prePage;
hasNextPage = data.hasNextPage,
nextPage = data.nextPage,
hasPrePage = data.hasPrePage;
thisid = data.id;
console.log("::"+prePage+hasNextPage+nextPage+hasPrePage+thisid)
//當前頁碼
var thisPage = prePage+1;
if(hasPrePage==false && hasNextPage==true){ //沒有上一頁
pagestr += '<!--分頁-->'
+'<div class="mui-content-padded mgtb0">'
+'<ul class="mui-pager">'
+'<li class="on"><a>'+thisPage+'</a></li>'
+'<li class="bd0"><a onclick="nextPageFun('
+ thisid+','+nextPage+','+sizeNum
+')">下一頁</a></li>'
+'</ul>'
+'</div>'
}
if (hasPrePage==true && hasNextPage==false){ //沒有下一頁
pagestr += '<!--分頁-->'
+'<div class="mui-content-padded mgtb0">'
+'<ul class="mui-pager">'
+'<li class="bd0"><a onclick="prePageFun('
+ thisid+','+prePage+','+sizeNum
+')">上一頁</a></li>'
+'<li class="on"><a>'+thisPage+'</a></li>'
+'</ul>'
+'</div>'
}
if (hasPrePage==true && hasNextPage==true) { //有上下翻頁
pagestr += '<!--分頁-->'
+'<div class="mui-content-padded mgtb0">'
+'<ul class="mui-pager">'
+'<li class="bd0"><a onclick="prePageFun('
+ thisid+','+prePage+','+sizeNum
+')">上一頁</a></li>'
+'<li class="on"><a>'+thisPage+'</a></li>'
+'<li class="bd0"><a onclick="nextPageFun('
+ thisid+','+nextPage+','+sizeNum
+')">下一頁</a></li>'
+'</ul>'
+'</div>'
}
//統一渲染賦值
$("#fixedpage").html(pagestr);
}
}
});
}
function categoryFun(id,type,eq,keyword,pageNum,sizeNum){
if(id != thisid){ //如果切換一級欄目
pageNum =1;
}
tagtype = type;
keywd = keyword;
var catedata=[];
$.ajax({
type:"get", //提交方式
data:{ "id" : id,"keyWord": keywd,"page":pageNum,"size":sizeNum}, //查詢的參數
url: linkurl, //提交的路徑
dataType:"json", //返回的類型 是Text文本
success:function(data){
// console.log(data);
if(data==0) {
console.log("不可以使用");
}else{
//console.log("可以使用categoryFun");
//獲取需要的數據
var group = data.data ;
var catedata = data.menus[0].children ;
/*
console.log(catedata[0].children)
//catedata = JSON.stringify(catedata)
console.log(catedata[eq].children.length)
console.log(catedata[eq].children[0].name)
console.log(catedata[eq].children[1].name)
*/
// 邏輯重調:終止引發的問題
var tagstr="";
// console.log("keyword=="+keyword);
for(var i=0;i<catedata[eq].children.length;i++){
tagstr += '<a class="mui-btn gzbg gzbg_'
+ catedata[eq].children[i].id
+ ' " onclick="tagFun('
+ catedata[eq].children[i].id
+','
+" 'tag',"
+ eq
+" ,' "
+ keywd
+" ',"
+ pageNum
+","
+ sizeNum
+","
+ 1
+" ) "
+' " id="gzbg_'
+ catedata[eq].children[i].id
+' ">'
+ catedata[eq].children[i].name
+'</a>';
}
//tag拼接渲染
$('#tagjsp').html(tagstr);
//文章list區域:拼接渲染
var str = '';
for(var i=0;i<group.length;i++){
var imgurl = group[i].thumbnail;
if(imgurl != ''){
str += '<li class="mui-table-view-cell mui-media line">'
+'<a href="http://192.168.0.109:8080/cmsarticle/'+'1/' + id + '/' + group[i].content_id+'.html">'
+'<img class="mui-media-object mui-pull-left scyl-img" src="'
+'http://192.168.0.109:8081/ofcms-admin'+imgurl
+'">'
+'<div class="mui-media-body">'
+'<p class="scyl-title">'
+group[i].title_name+'</p>'
+'<p class="scyl-uptime">'+getLocalTime(group[i].create_time)+'</p>'
+'</div></a>'
+'</li>';
} else {
str += '<li class="mui-table-view-cell mui-media line">'
+'<a href="http://192.168.0.109:8080/cmsarticle/'+'1/' + id + '/' + group[i].content_id+'.html">'
+'<img class="mui-media-object mui-pull-left scyl-img" src="static.docs.v1.1/images/scyl_2/default.jpg">'
+'<div class="mui-media-body">'
+'<p class="scyl-title">'
+group[i].title_name+'</p>'
+'<p class="scyl-uptime">'+getLocalTime(group[i].create_time)+'</p>'
+'</div></a>'
+'</li>';
}
}
//增加查看全部
if(group.length == 0){
str="";
str += '<li class="article-a-li-more">'
+'<a class="mui-badge a-more">暫無數據</a>'
+'</li>';
} else {
}
str = '<ul class="mui-table-view bfnone">'
+str
+'</ul>';
//list拼接渲染
$('#article-ul').html(str);
//覆寫上一頁下一頁
var pagestr = '';
var prePage = data.prePage;
hasNextPage = data.hasNextPage,
nextPage = data.nextPage,
hasPrePage = data.hasPrePage;
thisid = data.id;
console.log("::"+prePage+hasNextPage+nextPage+hasPrePage+thisid)
//當前頁碼
var thisPage = prePage+1;
if(hasPrePage==false && hasNextPage==true){ //沒有上一頁
pagestr += '<!--分頁-->'
+'<div class="mui-content-padded mgtb0">'
+'<ul class="mui-pager">'
+'<li class="on"><a>'+thisPage+'</a></li>'
+'<li class="bd0"><a onclick="nextPageFun('
+ thisid+','+nextPage+','+sizeNum+','+1
+')">下一頁</a></li>'
+'</ul>'
+'</div>'
}
if (hasPrePage==true && hasNextPage==false){ //沒有下一頁
pagestr += '<!--分頁-->'
+'<div class="mui-content-padded mgtb0">'
+'<ul class="mui-pager">'
+'<li class="bd0"><a onclick="prePageFun('
+ thisid+','+prePage+','+sizeNum+','+1
+')">上一頁</a></li>'
+'<li class="on"><a>'+thisPage+'</a></li>'
+'</ul>'
+'</div>'
}
if (hasPrePage==true && hasNextPage==true) { //有上下翻頁
pagestr += '<!--分頁-->'
+'<div class="mui-content-padded mgtb0">'
+'<ul class="mui-pager">'
+'<li class="bd0"><a onclick="prePageFun('
+ thisid+','+prePage+','+sizeNum+','+1
+')">上一頁</a></li>'
+'<li class="on"><a>'+thisPage+'</a></li>'
+'<li class="bd0"><a onclick="nextPageFun('
+ thisid+','+nextPage+','+sizeNum
+')">下一頁</a></li>'
+'</ul>'
+'</div>'
}
//統一渲染賦值
$("#fixedpage").html(pagestr);
}
}
});
//標籤
$.ajax({
type:"get", //提交方式
data:{ "id" : id,"keyWord": keywd,"page":pageNum,"size":sizeNum}, //查詢的參數
url: tagurl, //提交的路徑
dataType:"json", //返回的類型 是Text文本
success:function(data){
if(data==0) {
console.log("不可以使用");
}else{
//console.log("可以使用tag:categoryFun");
//獲取需要的數據
var group = data.data[0].children;
// alert(group)
//拼接字符串
var str2='';
//對數據做遍歷,拼接到頁面顯示
for(var i=0;i<group.length;i++){
if(group[i].id==id){
str2 += '<a class="mui-control-item navli mui-active" onclick="categoryFun('
+ group[i].id
+','
+ " 'category',"
+ i
+" ,' "
+ keywd
+" ',"
+ pageNum
+","
+ sizeNum
+" ) "
+' " id="category_'
+ group[i].id
+' ">'
+ group[i].name
+'</a>';
} else {
str2 += '<a class="mui-control-item navli" onclick="categoryFun('
+ group[i].id
+','
+ " 'category',"
+ i
+" ,' "
+ keywd
+" ',"
+ pageNum
+","
+ sizeNum
+" ) "
+' " id="category_'
+ group[i].id
+' ">'
+ group[i].name
+'</a>';
}
}
//放入頁面的容器顯示
$('#segmentedControl').html(str2);
}
}
});
}
function tagFun(id,type,eq,keyword,pageNum,sizeNum){
tagtype = type;
keywd = keyword;
if(id != thisid){ //如果切換一級欄目
console.log(id+"///"+thisid)
pageNum =1;
}
//標籤
$.ajax({
type:"get", //提交方式
data:{ "id" : id,"keyWord": keywd,"page":pageNum,"size":sizeNum}, //查詢的參數
url: articleurl, //提交的路徑
dataType:"json", //返回的類型 是Text文本
success:function(data){
if(data==0) {
console.log("不可以使用");
}else{
console.log("可以使用tagFunyyyyyy");
//獲取需要的數據
var group = data.data;
console.log(data);
console.log(group[0].content_id)
//文章list區域:拼接渲染
var str = '';
for(var i=0;i<group.length;i++){
var imgurl = group[i].thumbnail;
if(imgurl != ''){
str += '<li class="mui-table-view-cell mui-media line">'
+'<a href="http://192.168.0.109:8080/cmsarticle/'+'1/' + id + '/' + group[i].content_id+'.html">'
+'<img class="mui-media-object mui-pull-left scyl-img" src="'
+'http://192.168.0.109:8081/ofcms-admin'+imgurl
+'">'
+'<div class="mui-media-body">'
+'<p class="scyl-title">'
+group[i].title_name+'</p>'
+'<p class="scyl-uptime">'+getLocalTime(group[i].create_time)+'</p>'
+'</div></a>'
+'</li>';
} else {
str += '<li class="mui-table-view-cell mui-media line">'
+'<a href="http://192.168.0.109:8080/cmsarticle/'+'1/' + id + '/' + group[i].content_id+'.html">'
+'<img class="mui-media-object mui-pull-left scyl-img" src="static.docs.v1.1/images/scyl_2/default.jpg">'
+'<div class="mui-media-body">'
+'<p class="scyl-title">'
+group[i].title_name+'</p>'
+'<p class="scyl-uptime">'+getLocalTime(group[i].create_time)+'</p>'
+'</div></a>'
+'</li>';
}
}
//增加查看全部
if(group.length == 0){
str="";
str += '<li class="article-a-li-more">'
+'<a class="mui-badge a-more">暫無數據</a>'
+'</li>';
} else {
// str += '<li class="article-a-li-more">'
// +'<a class="mui-badge a-more" href="">查看全部</a>'
// +'</li>';
}
str = '<ul class="mui-table-view bfnone">'
+str
+'</ul>';
//list拼接渲染
$('#article-ul').html(str);
console.log(id)
$(".gzbg").removeClass("on");
$(".gzbg_"+id).addClass("on");
//覆寫上一頁下一頁
var pagestr = '';
var prePage = data.prePage;
hasNextPage = data.hasNextPage,
nextPage = data.nextPage,
hasPrePage = data.hasPrePage;
thisid = data.id;
console.log("::"+prePage+hasNextPage+nextPage+hasPrePage+thisid)
//當前頁碼
var thisPage = prePage+1;
if(hasPrePage==false && hasNextPage==true){ //沒有上一頁
console.log("ooookkkrrr")
pagestr += '<!--分頁-->'
+'<div class="mui-content-padded mgtb0">'
+'<ul class="mui-pager">'
+'<li class="on"><a>'+thisPage+'</a></li>'
+'<li class="bd0"><a onclick="nextPageFun('
+ thisid+','+nextPage+','+sizeNum +','+2
+')">下一頁</a></li>'
+'</ul>'
+'</div>'
}
if (hasPrePage==true && hasNextPage==false){ //沒有下一頁
pagestr += '<!--分頁-->'
+'<div class="mui-content-padded mgtb0">'
+'<ul class="mui-pager">'
+'<li class="bd0"><a onclick="prePageFun('
+ thisid+','+prePage+','+sizeNum+','+2
+')">上一頁</a></li>'
+'<li class="on"><a>'+thisPage+'</a></li>'
+'</ul>'
+'</div>'
}
if (hasPrePage==true && hasNextPage==true) { //有上下翻頁
pagestr += '<!--分頁-->'
+'<div class="mui-content-padded mgtb0">'
+'<ul class="mui-pager">'
+'<li class="bd0"><a onclick="prePageFun('
+ thisid+','+prePage+','+sizeNum+','+2
+')">上一頁</a></li>'
+'<li class="on"><a>'+thisPage+'</a></li>'
+'<li class="bd0"><a onclick="nextPageFun('
+ thisid+','+nextPage+','+sizeNum+','+2
+')">下一頁</a></li>'
+'</ul>'
+'</div>'
}
//統一渲染賦值
$("#fixedpage").html(pagestr);
}
}
});
}
//轉換日期格式
function getLocalTime(nS) {
return new Date(parseInt(nS) ).toLocaleString().replace(/:\d{1,2}$/,' ');
}
</script>
</body>
</html>
以上就是關於“ Ajax異步請求(重渲染DOM元素時,如何自動調用並執行JS自定義函數【含代碼】)- 案例篇 ” 的全部內容。