基于HTML模板和JSON数据的JavaScript交互(移动端)


Posted in Javascript onApril 06, 2016

写本文之前,我正在做一个基于Tab页的订单中心:

每点击一个TAB标签,会请求对应状态的订单列表。之前的项目,我会在js里使用 + 连接符连接多个html内容:

var html = '';
html += '<div class="empty-list">' + 
'<div class="icon icon-box"></div>'+
'<div>还没有订单</div>'+
'</div>';

Html内容少点还好,但是当内容多起来的时候,再使用这种方式,以后维护起来不方便,也影响美观,可阅读性差。

突然想起来PHP模板的相关知识,那么应该也有类似JavaScript模板一说。由于为了快速使用在项目上,就去网上找了找。还真有:

基于HTML模板和JSON数据的JavaScript交互

http://www.zhangxinxu.com/wordpress/2012/09/javascript-html-json-template/

看了下文章,使用起来还是蛮简单的:

1、准备好html模板

<textarea class="js-order-tmp" style="display:none;">
<!--goods-block-->
<div class="block m-s-order">
<div class="block-item block-news">
<a href="<?php echo site_url('order/detail/'. '$id$')?>" class="dis-block external">
<div class="item-img">
<img src="$thumb$"/>
</div>
<div class="item-intro">
<div class="sub-l">
<p class="t-order-num">订单号:$order_num$</p>
<p class="t-name">收件人:$cus_name$</p>
<p class="t-date">$create_time$</p>
</div>
<div class="sub-r">
<p class="t-expand"><span class="icon icon-right"></span></p>
<p class="t-flag">$flag_name$</p>
</div>
</div>
<div class="clear"></div>
</a>
</div>
</div>
<!--/goods-block-->
</textarea>
<textarea class="js-no-order-tmp" style="display:none;">
<!-- no order -->
<div class="empty-list">
<div class="icon icon-box"></div>
<div>还没有订单</div>
</div>
<!-- /no order -->
</textarea>

其中变量部分全部用 variate variate 表示。

2、模板方法很简单,直接写一个基于字符串原型的扩展方法,确保全局可用:

String.prototype.temp = function(obj) {
return this.replace(/\$\w+\$/gi, function(matchs) {
var returns = obj[matchs.replace(/\$/g, "")]; 
return (returns + "") == "undefined"? "": returns;
});
};

主要使用到了正则知识。

3、准备json数据:

{
"ecd": 0,
"msg": "成功",
"result": [{
"id": "32",
"order_num": "test-001",
"title": "test",
"thumb": "http:\/\/40DA1265-40F6-D622-8BA5-04BA0AF72573.jpg",
"item_id": "21",
"price": "0.11",
"cus_name": "test",
"cus_tel": "10086",
"cus_address": "北京 北京海淀区",
"flag": "5",
"create_time": "20160329115544",
"update_time": "20160330120001",
"flag_name": "订单已取消"
}],
"locate": ""
}

4、使用ajax显示数据

$.progress_show('正在努力加载中');
$.ajax({
url: site_url + 'api/order/getAll/' + status,
type: 'get',
dataType: 'json',
error: doAjax.error,
success: function (response) {
$.progress_hide();
if (response.ecd == '0') {
var htmlList = '', htmlTemp = $("textarea.js-order-tmp").val();
if(typeof response.result === 'undefined'){
htmlList = $("textarea.js-no-order-tmp").val();
}else{
$.each(response.result, function(i,el) {
htmlList += htmlTemp.temp(el);
});
}
$('.js-status-' + status).empty().append(htmlList);
return true;
} else {
return $.alert(response.msg);
}
},
});

这里的部分方法没有给出,大家知道流程、原理即可。通过点击TAB标签,就可以显示数据了:

以上内容是小编给大家介绍的基于HTML模板和JSON数据的JavaScript交互(移动端),希望对大家有所帮助!

Javascript 相关文章推荐
Javascript 验证上传图片大小[客户端]
Aug 01 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
Mar 19 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
Aug 08 Javascript
基于require.js的使用(实例讲解)
Sep 07 Javascript
基于Vue单文件组件详解
Sep 15 Javascript
JS写谷歌浏览器chrome的外挂实例
Jan 11 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
Oct 11 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
Nov 05 Javascript
vue实现搜索功能
May 28 Javascript
JavaScript canvas实现跟随鼠标事件
Feb 10 Javascript
jquery+css3实现的经典弹出层效果示例
May 16 jQuery
一篇文章带你从零快速上手Rollup
Sep 07 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
Apr 06 #Javascript
jQuery实现内容定时切换效果完整实例
Apr 06 #Javascript
jQuery隐藏和显示效果实现
Apr 06 #Javascript
JS动态改变浏览器标题的方法
Apr 06 #Javascript
jQuery ajax提交Form表单实例(附demo源码)
Apr 06 #Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
Apr 06 #Javascript
JS控制伪元素的方法汇总
Apr 06 #Javascript
You might like
php Hex RGB颜色值互换的使用
2013/05/10 PHP
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
vue中用动态组件实现选项卡切换效果
2017/03/25 Javascript
js实现一个简单的数字时钟效果
2017/03/29 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
Python map和reduce函数用法示例
2015/02/26 Python
Python使用django获取用户IP地址的方法
2015/05/11 Python
Python实现获取域名所用服务器的真实IP
2015/10/25 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
Django组件cookie与session的具体使用
2019/06/05 Python
Python reversed函数及使用方法解析
2020/03/17 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
python安装及变量名介绍详解
2020/12/12 Python
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
医学护理毕业生自荐信
2013/11/07 职场文书
员工合理化建议书
2014/05/19 职场文书
电子商务求职信
2014/06/15 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
党支部承诺书
2015/01/20 职场文书
六年级作文之自救
2019/12/19 职场文书
基于go interface{}==nil 的几种坑及原理分析
2021/04/24 Golang
react 项目中引入图片的几种方式
2021/06/02 Javascript
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP