第一次在项目中用laytpl模板,下面是一些使用过程中的探索,希望对小伙伴们有所帮助。

  注:第一次使用这个模板的小伙伴建议先去看看官网 laytpl

<script type="text/html" id="productList-shop-main1">  //模板内容都要存放在<script>标签里
{{# for (var i = 0; i < d.obj.length; i++){ }}  //模板里面的for循环跟js一样的写法,要写在{{# }}这里面
<div class="list-shop product-list-shop" data-id="{{d.obj[i].id}}">  //模板内容里面的数据要写在2对大括号里面{{ d.数据 }}
<div class="list-msg-2 productlist-img">       //模板里面的数据前面都要加上d,没有为什么,语法就这样
<a title="{{d.obj[i].fullName}}"><img src="{{d.obj[i].imgrealpath_45}}" class="shop-img" data-id="{{d.obj[i].id}}"/></a>
</div>
<div class="list-msg-3 productlist-msg-3">
<div class="list-main-1">
<div class="productlist-list-main-1-left list-main-1-left product-main-1-left">{{d.obj[i].fullName}}</div>
</div>
<div class="list-main-3">
<div class="list-main-3-left"><span>¥{{d.obj[i].price}}</span></div>
<div class="list-main-3-right">
<ul class="product-btn productlist-btn"> {{# if(d.obj[i].isFavorite == 1){ }}  //if else也是js的写法,也要写在{{# }}里面
<li><img class="favorite-icon" src="webpage/weixin/wudeli-weixin/images/list01.png" data-value="{{d.obj[i].isFavorite}}" /></li>
{{# }else{ }}  //else也要写在{{# }}
<li><img class="favorite-icon" src="webpage/weixin/wudeli-weixin/images/list1.png" data-value="{{d.obj[i].isFavorite}}" /></li>
{{# } }}  //结束括号也要写在{{# }}
<li><img class="index-car-icon" src="webpage/weixin/wudeli-weixin/images/car-chcked01.png" /></li>
<li class="product-btn-buy productlist-btn-buy" "><button onclick="productBtn(this);">立即购买</button></li>
</ul>
</div>
</div>
</div>
</div>
{{# } }}  //for循环结束括号也要单独写在这里面{{# }}
</script>

 上面模板的内容就是下图红色框的部分,使用了这个模板以后,就不用再拼字符串了。

  

  下面总结了2种写法:

  第一种是模板里面已经写了循环(比如我上面的模板就已经写了循环),ajax请求里面就不需要在写循环了,如下图:

  

    var gettpl = document.getElementById('productList-shop-main1').innerHTML; 
    $.ajax({
url: "orderController.do?findTdCodeNews",
data: {
"billCompanyName":billCompanyName
 },
type: "post",
dataType:"json",
success: function (e) {
if (!e.success) {
alert(e.msg);
return false;
} laytpl(gettpl).render(e, function(html){  //这里的gettp1就是获取到模板内容的id
document.getElementById('item3-main').innerHTML = html;  //把获取到的模板内容添加到id为item3-main的容器里面
}); }
});
}

   

  第二种是,模板里面没有写循环,那么就要在ajax请求里面写循环,如下图:

  

    var gettpl = document.getElementById('productList-shop-main1').innerHTML;  
    $.ajax({
url: "orderController.do?findTdCodeNews",
data: {
"billCompanyName":billCompanyName
 },
type: "post",
dataType:"json",
success: function (e) {
if (!e.success) {
alert(e.msg);
return false;
}

             //xxx代表返回结果集的属性名称
           for(var i = 0; i < e.xxx.length; i++){
laytpl(gettpl).render(xxx[i], function(html){ 
document.getElementById('item3-main').innerHTML = html;  
});
}
}
});
}

  

laytpl模板——怎么使用ajax与数据交互的更多相关文章

  1. $Django ajax简介 ajax简单数据交互,上传文件(form-data格式数据),Json数据格式交互

    一.ajax  1 什么是ajax:异步的JavaScript和xml,跟后台交互,都用json  2 ajax干啥用的?前后端做数据交互:  3 之前学的跟后台做交互的方式:   -第一种:在浏览器 ...

  2. AJAX进行数据交互的过程

    AJAX全称为"Asynchronous JavaScript and XML"(异步JavaScript和XML). 是指一种创建交互式网页应用的网页开发技术. 通过在后台与服务 ...

  3. springmvc使用ajax进行数据交互时,session失效问题(@ResponseBody与session能否同时使用?)

    今天做博客demo的时候遇到了这样的问题:当我用ajax进行资源请求时,需要顺便将账户信息存入session.但是后来发现有@Responsebody标签时,直接用HttpSession存数据时,根本 ...

  4. Vue--- Vue(Pubsub + Ajax) 数据交互

    案例知识点 兄弟组件儿的通信     使用了Pubsub    订阅与发布 ajax数据请求    获取前   获取中   获取后   获取为空    获取异常 获取成功后显示数据给到  原先定义号的 ...

  5. Struts2+Ajax实现数据交互

    1.导入jar包 struts核心包: json需要的包: 2.配置web.xml <filter> <filter-name>struts2</filter-name& ...

  6. EChats+Ajax之柱状图的数据交互

    原文链接:https://blog.csdn.net/qq_37936542/article/details/79723710 一:下载 echarts.min.js 选择完整版进行下载,精简版和常用 ...

  7. Ajax概述,封装以及联合模板引擎进行数据交互

    欢迎大家去博客冰山一树Sankey,浏览效果更好.直接右上角搜索该标题即可 博客园主页:博客园主页-冰山一树Sankey CSDN主页:CSDN主页-冰山一树Sankey 更多资料可参考Ajax 介绍 ...

  8. 无废话ExtJs 入门教程二十[数据交互:AJAX]

    无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...

  9. JavaScript模板引擎实现数据交互

    经过1年的磨练,近期终于稍微明白到,前端是怎么做到企业要求的:数据交互. 1,ajax+json这个是必须学的,但没问题,我们可以通过这个博客来慢慢了解怎么回事? 2,可以通过JS框架和JS模板来实现 ...

随机推荐

  1. Chrome浏览器自动填充<input>标签的密码

    问题:登录页面登录时,Chrome浏览器保存了用户名和密码,在其他页面管理其他的账户和密码时,密码框先是显示正确的密码,然后一闪而过被覆盖. 原因:问了技术主管才得知,Chrome浏览器中的,保存用户 ...

  2. C++的变量初始化

    C++中变量的初始化有很多种方式,如:默认初始化,值初始化,直接初始化,拷贝初始化,列表初始化. 1.默认初始化:默认初始化是指定义变量时没有指定初值时进行的初始化操作. 如:int a:这些变量被定 ...

  3. Python深度学习(Deep Learning with Python) 中文版+英文版+源代码

    Keras作者.谷歌大脑François Chollet最新撰写的深度学习Python教程实战书籍(2017年12月出版)介绍深入学习使用Python语言和强大Keras库,详实新颖.PDF高清中文版 ...

  4. Mysql exists 与 in

    今天公司同事反馈一个SQL语句删除数据删除了一个小时,还没有删除完,强制中断. 第一眼看到 exists 的时候,脑子里要有这么个概念: Oracle exists 的效率比in 高.而Mysql 则 ...

  5. 3DMath

    线与面相交的计算 https://zh.wikipedia.org/wiki/%E7%BA%BF%E9%9D%A2%E4%BA%A4%E7%82%B9 什么是参数方程? 参数是参变数的简称.它是研究运 ...

  6. .net core 2.x - docker(for windows)-linux配置及项目+SqlServer发布

    将.net core2.x+sqlserver项目发布到docker.呵呵,操作很自如,如下. 1.罗嗦几句 在跑起来之前浪费了不少时间和精力,起初是将docker for windows的环境转换成 ...

  7. P1119 灾后重建 floyd

    题目背景 BB地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重建完成的村庄的公路才 ...

  8. 032 Java再次总结

    1.大纲 多线程怎么用的,线程池,事务,传播机制与隔离级别,反射,泛型,数据库引擎的区别,数据库merge,窗口函数,fastJson,JVM调优,GC钩子,Linux的awk,shell,HashM ...

  9. RSP小组——团队冲刺博客一——(领航)

    RSP小组--团队冲刺博客一--领航 冲刺日期:2018年12月10日 团队目标 经过团队讨论,我们最新确定的α版本所需实现内容如下: 1.实现游戏代码的实现 2.在Android Studio上实现 ...

  10. 将普通用户添加到sudo

    将普通用户添加到sudo组 可以编辑/etc/sudoers文件将普通用户加入sudo组.要注意的是修改该文件只能使用visudo命令:1.首先切换到root #su - (注意有 “-” ,这和su ...