Mockjs+Ajax实践
需要完成的工作:利用mock js随机生成数据,通过ajax请求,获取这些数据并展示在网页中。
一 mock js随机生成数据
官方文档中,Mock.mock( ),可以说是mock的精髓所在。
Mock.mock( rurl?, rtype?, template|function( options ) )
根据数据模板生成模拟数据。
-rurl:当拦截到匹配rurl的Ajax请求时,根据数据模板template生成模拟数据,作为响应数据返回。
-rtype:表示需要拦截的ajax请求类型,比如get、post、put、delete等。
//js部分
var testPath = '/born', //匹配ajax操作的路径
testMethod = 'get'; //匹配ajax请求类型
let temp = {
'list|5-10': [{
'aid|+1': 1,
'title|1-6': '我是标题 ', //30字以内的标题
'update_time|10000-99999':10000,
'thumb':'@URL', //随机url地址
'color' : '@color', //随机颜色
'image':'@IMAGE("200x100")' //尺寸为200*100的图片
}]
}
Mock.mock(testPath, testMethod, temp); //生成模拟数据
二 Ajax操作
点击按钮,获取数据,并对HTML元素进行操作
//HTML部分
<h3>==测试·准备请求ajax·测试==</h3>
<p class="p"></p>
<button>点我请求ajax</button>
<article class="temp">
<!--<a href="">
<p class="title"></p>
<img src="" alt="">
</a> -->
</article>
<article class="hide" id="module">
<a href="">
<p class="title"></p>
<img src="" alt="">
</a>
</article>
//Ajax请求处理
$("button").bind('click',function(){
$.ajax({
url: testPath,
type: 'get',
dataType: 'json',
timeout: 1000,
success:function(data, status, jqXHR){
fillTemplet(data, status, jqXHR); //ajax请求成功,执行这些操作
},
error:function(req,status,err){
console.log('some err')
console.log('req',req);
console.log('status',status);
console.log('err',err);
}
})
});
三 DOM操作
采用了两种方法,一种是直接在js中写入HTML,包括元素、内容等,另一种是克隆HTML模板,然后对其添加内容。推荐使用方法二,便于修改调试,符合内容、样式、数据分离的规则。
//js部分
//方法一
function fillTemplet(data, status, jqXHR){
let father = $('.temp');
$.each(data.list,function(index,obj){
//根据mock数据(temp)生成内容
//直接写入html
let block = '<a href="'+ obj.thumb +'">'
+ '<p class="title">'+ obj.title +'</p>'
+ '<img src="'+ obj.image +'" alt="我是图片">'
+'</a>'
father.append(block);
})
}
//方法二
function fillTemplet(data, status, jqXHR){
let father = $('.temp');
$.each(data.list,function(index,obj){
//方法二,克隆HTML中写好的module模板
let child = $('#module').clone().removeAttr('id').removeClass('hide');
child.children('a').attr('href',obj.thumb);
child.find('p').text(obj.title).css('color',obj.color);
child.find('img').attr('src',obj.image);
father.append(child);
})
}
Mockjs+Ajax实践的更多相关文章
- Ajax实践之用户是否存在
关于Ajax在之前的学习中,已经对它的基础知识有了初步的了解.仅仅是欠实践. 那么接下来就让实践来检验一下真理吧! 基础见:http://blog.csdn.net/liu_yujie2011com/ ...
- (转)JAVA AJAX教程第一章-初始AJAX
既然是认识AJAX,理论和实践相结合,这样让自己学的更快,理解更深入,我分一下几点: 1. 认识传统的同步交互方式和AJAX解决方案 2. AJAX使用到的技术 3. 实例体验AJAX 一.同步 ...
- AJAX之JSON
AJAX=Asynchronous JavaScript and XML(异步的JavaScript 和XML). AJAX不是新的编程语言,而是一种是用现代标准的新方法,用于创建快速动态网页的技术. ...
- HTTP请求封装:Ajax与RESTful API
一.HTTP请求 HTTP即超文本传输协议,用以进行HTML 文件. 图片文件. 查询结果等的网络传输. 一个完整的HTTP请求包括:请求行.请求头.空行和请求数据(请求数据可以为空) HTTP1.1 ...
- ajax 兼容性问题解决 集锦
这两天刚解决了ajax多浏览器兼容的问题,主要就针对Firefox的,开始还以为Firefox不支持ajax呢(别笑我呀,不怎么了解Firefox也没用过,呵呵),多亏看了下面的文章才让我了解ajax ...
- React笔记_(5)_react语法4
ajax 数据应用场景 在真实的开发环境中,拿到了产品需求,第一件事不是逼着后台开发人员先完成,然后前端再介入开发,这样太浪费时间. 正确的做法是跟后端人员先商量好接口名称,请求参数,返回的数据格式等 ...
- Daily Scrumming 2015.10.23(Day 4)
今明两天任务表 Member Today’s Task Tomorrow’s Task 江昊 继续学习rails ActiveRecord 数据库迁移 域名备案申请 学习rails router配置与 ...
- 关于php上传文件过大的表单回填
也许标题有点绕口,有点无法让人理解.请原谅博主,语文学的不好,都赖体育老师. 问题场景重现:在某次迭代中,接到这样一个需求:当新建或编辑一个Bug(包含附件以及其他字段)上传附件过大时,退回到编辑页面 ...
- atitit.ajax 最佳实践跟框架选型 o99
atitit.ajax 最佳实践跟框架选型 1. 选型框架dwr/dwr3 跟jq 1 2. DWR方便的地方分为两个地方. 1 3. dwr 优点: 1 4. 缺点: 2 5. 根jq的区别 2 1 ...
随机推荐
- ASP.NET Core技术研究-探秘依赖注入框架
ASP.NET Core在底层内置了一个依赖注入框架,通过依赖注入的方式注册服务.提供服务.依赖注入不仅服务于ASP.NET Core自身,同时也是应用程序的服务提供者. 毫不夸张的说,ASP.NET ...
- IDEA永久激活码获取
废话少说,直接上地址:http://idea.medeming.com/jet/ *小编还是建议,有家底的程序猿还是直接买正版的号,非正版的很多不便的地方~
- .Net Core结合AspNetCoreRateLimit实现限流
前言 相信使用过WebApiThrottle的童鞋对AspNetCoreRateLimit应该不陌生,AspNetCoreRateLimit是一个ASP.NET Core速率限制的解决方案,旨在控制客 ...
- java中JVM虚拟机内存模型详细说明
java中JVM虚拟机内存模型详细说明 2012-12-12 18:36:03| 分类: JAVA | 标签:java jvm 堆内存 虚拟机 |举报|字号 订阅 JVM的内部结构 ...
- MD5中使用16进制
MD5中使用16进制消息摘要 分类: java_secruity2012-12-28 13:11 719人阅读 评论(0) 收藏 举报 消息摘要 由于数据在计算机中的表示,最终以二进制的形式存在,所以 ...
- 1.Git 安装
Git的安装 阿里云镜像去下载 阿里云的镜像地址 卸载Git 1.首先在系统环境变量->path->里面去清理掉git相关的环境变量 2.然后控制面板卸载 安装Git 一直下一步即可 使用 ...
- SpringBoot连接Redis服务出现DENIED Redis is running in protected mode because protected mode is enabled
修改redis.conf,yes 改为 no
- 将函数作为返回值的方法 - Python
有的时候,我们需要将函数作为返回值,以下为代码: def superfunc(): i = 0 def wrapper(): nonlocal i i +=1 return i return wrap ...
- frame/iframe多表单切换
应用场景: 在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位.这时就 ...
- selenium获取多窗口句柄并一切换至原窗口句柄(三个窗口)
网上有很多是selenium基于python来获取两个窗口句柄与切换,本文实现用python+selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口),且在每个窗口下进行一个搜索或翻译,然后截 ...