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自定义函数【含代码】)- 案例篇 ” 的全部内容。