最近用ajax获取数据,上级要求要自己写一个js模板,以往看到的js模板,大都数都是在js里面拼接的,现在换一种比较简单的写法,

通过ajax获取数据源,js模板循环显示数据

 function GetBalance() {
var star = $("#starsj").val();
var end = $("#endsj").val();
var data = { opt: "GetAllotment", In: star, Out: end };
var layindex = 0;
$.ajax({
type: "POST",
url: "Source/GetData.aspx",
data: data,
beforeSend: function () {
},
success: function (r) {
//r值是一个obj类型,里面包含了几个数组
if (r.Status == 0) {
//使用laytpl方法获取写好的模板读出后,用r的数据去填充
var ret = laytpl($("#tpl-prieshow").html()).render(r);
$("#tplmo").html(ret); //将最新的模板数据,通过div(tplmo)显示出来
}
},
dataFilter: function (data, type) {
if (data.length > 0 && data != "{}") {
return $.parseJSON(data);
}
layer.msg('未查到数据!');
return null;
},
error: function (XMLHttpRequest, textStatus, errorThrown) { layer.msg('网络出现错误了!,请刷新重试或者联系管理员'); },
complete: function (XMLHttpRequest, textStatus) {
layer.close(layindex);
}
})
}

js代码

现在我们根据返回的json数据。看是否是数组和字符串

js模板 数组

得到r的数据格式

在js模板里面。为了避免错误。尽量不写注释。

 {
"Status": 0,
"Allotments": [{
"Status": 402,
"Used": 0,
"Locked": 0,
"Balance": 0
}, {
"Status": 402,
"Used": 0,
"Locked": 0,
"Balance": 0
}]

返回的json数据

    <div>

     <div id="div_adduser" class="easyui-dialog" title="余额显示" style="width: 450px; height: 450px; ">
<div style="padding:8px 8px;border-radius:3px 4px;border-bottom:1px solid rgb(204,204,204);"><span>开始日期:<input id="starsj" class="Wdate"onfocus="WdatePicker({minDate:'%y-%M-{%d+1}'})"
style="width: 85px; height: 20px;" /> </span>&nbsp;<span>截止日期:<input id="endsj" class="Wdate" onfocus="WdatePicker({minDate:'%y-%M-{%d+1}'})"style="width: 85px; height:20px; padding-left:8px;" /></span>&nbsp;
<a class="easyui-linkbutton" plain="true" onclick="GetBalance()">确定日期</a></div>
<div id="tplmo" style="margin-top:2px;"></div>
</div>
<%--金额显示--%>
<script id="tpl-prieshow" type="text/html">
{{# var dt=d.Allotments}}
<div style="padding-left:6px;">
{{#for(var i=0;i<dt.length;i++){ }} //循环读取r里面的Allotments(这是一个数组)数据 ;这里两个大括号是输出的意思
<table style="margin:5px 0px;width:98%;border:1px solid rgb(204,204,204);padding:5px;" id=hf}" >
<tr>
<td> <span style="width:80px;font-size:13px;padding:5px;">配额日期:<label>{{dt[i].EntitlementDate}}</label> </span></td>
</tr>
<tr> <td><span style="width:80px;font-size:13px;padding:5px;">配额结余:<label style="color:bule;">{{dt[i].Balance}}</label> </span><td>
<td><span style="width:80px;font-size:13px;padding:5px;">锁定配额:<label style="color:red;">{{dt[i].Locked}}</label> </span></td>
<td><span style="width:90px;font-size:13px;padding:5px;">已用配额:<label style="color:Gray;">{{dt[i].Used}}</label></span></td>
</tr>
</table>
{{#} }} //和循环开始标签要成对(一般不再这里加注释。避免引起错误)
</div>
</script>
</div>

模板代码(数组)

js模板 字符串

得到r的字符串格式

 { "Status": 0, "Locked": 1630, "Balance": 1000000 }

返回的字符串

    <script id="tpl-prieshow" type="text/html">
{{# var dt=d}}//获取的字符串
<div style="padding-left:6px;">
//循环读取r里面字符串 ;这里两个大括号是输出的意思
<table style="margin:5px 0px;width:98%;border:1px solid rgb(204,204,204);padding:5px;" id=hf}" >
<tr>
<td> <span style="width:80px;font-size:13px;padding:5px;">配额日期:<label>{{dt.EntitlementDate}}</label> </span></td>
</tr>
<tr> <td><span style="width:80px;font-size:13px;padding:5px;">配额结余:<label style="color:bule;">{{dt.Balance}}</label> </span><td>
<td><span style="width:80px;font-size:13px;padding:5px;">锁定配额:<label style="color:red;">{{dt.Locked}}</label> </span></td>
<td><span style="width:90px;font-size:13px;padding:5px;">已用配额:<label style="color:Gray;">{{dt.Used}}</label></span></td>
</tr>
</table> </div>
</script>

字符串

这是模板需要的js引用文件

官方网址:http://laytpl.layui.com/

不懂的可以去看下,学习学习

 ! function() {
"use strict";
var f, b = {
open: "{{",
close: "}}"
}, c = {
exp: function(a) {
return new RegExp(a, "g")
},
query: function(a, c, e) {
var f = ["#([\\s\\S])+?", "([^{#}])*?"][a || 0];
return d((c || "") + b.open + f + b.close + (e || ""))
},
escape: function(a) {
return String(a || "").replace(/&(?!#?[a-zA-Z0-9]+;)/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/'/g, "'").replace(/"/g, "&quot;")
},
error: function(a, b) {
var c = "Laytpl Error:";
return "object" == typeof console && console.error(c + a + "\n" + (b || "")), "" /*c+a*/
}
}, d = c.exp,
e = function(a) {
this.tpl = a
};
e.pt = e.prototype, e.pt.parse = function(a, e) {
var f = this,
g = a,
h = d("^" + b.open + "#", ""),
i = d(b.close + "$", "");
a = a.replace(/[\r\t\n]/g, " ").replace(d(b.open + "#"), b.open + "# ").replace(d(b.close + "}"), "} " + b.close).replace(/\\/g, "\\\\").replace(/(?="|')/g, "\\").replace(c.query(), function(a) {
return a = a.replace(h, "").replace(i, ""), '";' + a.replace(/\\/g, "") + '; view+="'
}).replace(c.query(1), function(a) {
var c = '"+(';
return a.replace(/\s/g, "") === b.open + b.close ? "" : (a = a.replace(d(b.open + "|" + b.close), ""), /^=/.test(a) && (a = a.replace(/^=/, ""), c = '"+_escape_('), c + a.replace(/\\/g, "") + ')+"')
}), a = '"use strict";var view = "' + a + '";return view;';
try {
return f.cache = a = new Function("d, _escape_", a), a(e, c.escape)
} catch (j) {
return delete f.cache, c.error(j, g)
}
}, e.pt.render = function(a, b) {
var e, d = this;
return a ? (e = d.cache ? d.cache(a, c.escape) : d.parse(d.tpl, a), b ? (b(e), void 0) : e) : c.error("no data")
}, f = function(a) {
return "string" != typeof a ? c.error("Template not found") : new e(a)
}, f.config = function(a) {
a = a || {};
for (var c in a) b[c] = a[c]
}, f.v = "1.1", "function" == typeof define ? define(function() {
return f
}) : "undefined" != typeof exports ? module.exports = f : window.laytpl = f
}();

js引用文件

ajax数据显示,使用js通用模板的更多相关文章

  1. js使用模板快速填充数据

    1.html <!DOCTYPE html> <html> <head> <title>模板标签</title> </head> ...

  2. JS之模板技术(aui / artTemplate)

    artTemplate是个好东西啊,一个开源的js前端模板引擎,使用简单,渲染效率特别的高. 我经常使用这个技术来在前端动态生成新闻列表,排行榜,历史记录等需要在前端列表显示的信息. 下面是artTe ...

  3. ajax请求返回数据,模板中的数据处理

    /*ajax请求返回数据,模板中的数据处理*/ function QueryGameAsset(){ var new_start_time=$('#new_start_time').val();//开 ...

  4. AJAX初识(原生JS版AJAX和Jquery版AJAX)

    一.什么是JSON 1.介绍 JSON独立于语言,是一种与语言无关的数据格式. JSON指的是JavaScript对象表示法(JavaScript Object Notation) JSON是轻量级的 ...

  5. Backbone.js 使用模板

    实际的应用中会使用到模板,Model 等,而模板又是进阶的基础.所以这里介绍在 View 中使用模板,以及如何向模板填充值,模板可以用字符串,或是用 <script type="tex ...

  6. 「小程序JAVA实战」小程序通用模板的使用(17)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-17/ 小程序也为了页面增加了通用模板的功能,如何去理解一个通用的模板呢?模板的定义就是为了让我们的 ...

  7. ajax请求node.js接口时出现 No 'Access-Control-Allow-Origin' header is present on the requested resource错误

    ajax请求node.js接口出现了如下的错误: XMLHttpRequest cannot load http://xxx.xxx.xx.xx:8888/getTem?cityId=110105&a ...

  8. JS通用事件监听函数

    JS通用事件监听函数 版本一 //把它全部封装到一个对象中 var obj={ readyEvent:function (fn){ if(fn==null){ fn=document; } var o ...

  9. 设计js通用库

    设计js通用库的四个步骤: 1.需求分析:分析库需要完成的所有功能. 2.编程接口:根据需求设计需要用到的接口及参数.返回值. 3.调用方法:支持链式调用,我们期望以动词方式描述接口. (ps:设计链 ...

随机推荐

  1. 及格率 不谢 cast(cast (sum(case when res>=60 then 1 else 0 end)*100/(count(1)*1.0) as float) as nvarchar)+'%' '及格率'

    --18.查询各科成绩最高分.最低分和平均分:--以如下形式显示:-- 课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率--及格为>=60,中等为:70-80,优良 ...

  2. OpenCV——Rect矩阵类

    成员变量x.y.width.height,分别为左上角点的坐标和矩形的宽和高. 常用的成员函数有: Size()返回值为一个Size area()返回矩形的面积 contains(Point)用来判断 ...

  3. python中json的操作示例

    先上一段示例 # -*- coding: cp936 -*- import json #构造一个示例数据,并打印成易读样式 j = {} j["userName"]="a ...

  4. 火狐浏览器,hostadmin hosts文件访问权限不足

    开始->附件->以管理员身份运行. cacls %windir%\system32\drivers\etc\hosts /E /G Users:W

  5. Maven 学习笔记

    1. Maven 工具的意义: 从事软件开发,无论什么样的项目,什么样的技术,都要经历:编码.测试.打包.发布等几个特定过程,而这些过程在软件开发周期中都是重复的.繁琐的.Maven的出现是为了将开发 ...

  6. [C++程序设计]内置函数

    注意: 可以在声明函数和定义函数时同时写 inline,也可以只在其中一处声明inline,效果相同,都能按内置函数处理. 使用内置函数可以节省运行时间,但却增加了目标 程序的长度.因此一般只将规模很 ...

  7. 一些常用Linux命令简记

    1.重命名文件夹 mv xxx/ yyy/  将xxx文件夹重命名为yyy(前提是当前目录没有yyy文件夹,否则就移进去了!) 2.数据盘重新挂载 一.# umount /mnt(卸载硬盘已挂载的mn ...

  8. Hibernate HQL基础 使用参数占位符

    在HQL中有两种方法实现使用参数占用符 1.使用? 使用?设置参数占位符,之后通过setString()和setInteger()等方法为其赋值.如: Query query = session.cr ...

  9. JS 输出对象的属性以及方法[转载]

    <script>var obj  = {attribute:1,method:function() {alert("我是函数");}}for (var i in obj ...

  10. jdk8预览

    原文:http://www.techempower.com/blog/2013/03/26/everything-about-java-8/ 1.接口增强 (1)接口可以定义static方法 java ...