需要完成的工作:利用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实践的更多相关文章

  1. Ajax实践之用户是否存在

    关于Ajax在之前的学习中,已经对它的基础知识有了初步的了解.仅仅是欠实践. 那么接下来就让实践来检验一下真理吧! 基础见:http://blog.csdn.net/liu_yujie2011com/ ...

  2. (转)JAVA AJAX教程第一章-初始AJAX

    既然是认识AJAX,理论和实践相结合,这样让自己学的更快,理解更深入,我分一下几点: 1.  认识传统的同步交互方式和AJAX解决方案 2.  AJAX使用到的技术 3.  实例体验AJAX 一.同步 ...

  3. AJAX之JSON

    AJAX=Asynchronous JavaScript and XML(异步的JavaScript 和XML). AJAX不是新的编程语言,而是一种是用现代标准的新方法,用于创建快速动态网页的技术. ...

  4. HTTP请求封装:Ajax与RESTful API

    一.HTTP请求 HTTP即超文本传输协议,用以进行HTML 文件. 图片文件. 查询结果等的网络传输. 一个完整的HTTP请求包括:请求行.请求头.空行和请求数据(请求数据可以为空) HTTP1.1 ...

  5. ajax 兼容性问题解决 集锦

    这两天刚解决了ajax多浏览器兼容的问题,主要就针对Firefox的,开始还以为Firefox不支持ajax呢(别笑我呀,不怎么了解Firefox也没用过,呵呵),多亏看了下面的文章才让我了解ajax ...

  6. React笔记_(5)_react语法4

    ajax 数据应用场景 在真实的开发环境中,拿到了产品需求,第一件事不是逼着后台开发人员先完成,然后前端再介入开发,这样太浪费时间. 正确的做法是跟后端人员先商量好接口名称,请求参数,返回的数据格式等 ...

  7. Daily Scrumming 2015.10.23(Day 4)

    今明两天任务表 Member Today’s Task Tomorrow’s Task 江昊 继续学习rails ActiveRecord 数据库迁移 域名备案申请 学习rails router配置与 ...

  8. 关于php上传文件过大的表单回填

    也许标题有点绕口,有点无法让人理解.请原谅博主,语文学的不好,都赖体育老师. 问题场景重现:在某次迭代中,接到这样一个需求:当新建或编辑一个Bug(包含附件以及其他字段)上传附件过大时,退回到编辑页面 ...

  9. atitit.ajax 最佳实践跟框架选型 o99

    atitit.ajax 最佳实践跟框架选型 1. 选型框架dwr/dwr3 跟jq 1 2. DWR方便的地方分为两个地方. 1 3. dwr 优点: 1 4. 缺点: 2 5. 根jq的区别 2 1 ...

随机推荐

  1. ASP.NET Core技术研究-探秘依赖注入框架

    ASP.NET Core在底层内置了一个依赖注入框架,通过依赖注入的方式注册服务.提供服务.依赖注入不仅服务于ASP.NET Core自身,同时也是应用程序的服务提供者. 毫不夸张的说,ASP.NET ...

  2. IDEA永久激活码获取

      废话少说,直接上地址:http://idea.medeming.com/jet/ *小编还是建议,有家底的程序猿还是直接买正版的号,非正版的很多不便的地方~

  3. .Net Core结合AspNetCoreRateLimit实现限流

    前言 相信使用过WebApiThrottle的童鞋对AspNetCoreRateLimit应该不陌生,AspNetCoreRateLimit是一个ASP.NET Core速率限制的解决方案,旨在控制客 ...

  4. java中JVM虚拟机内存模型详细说明

    java中JVM虚拟机内存模型详细说明 2012-12-12 18:36:03|  分类: JAVA |  标签:java  jvm  堆内存  虚拟机  |举报|字号 订阅     JVM的内部结构 ...

  5. MD5中使用16进制

    MD5中使用16进制消息摘要 分类: java_secruity2012-12-28 13:11 719人阅读 评论(0) 收藏 举报 消息摘要 由于数据在计算机中的表示,最终以二进制的形式存在,所以 ...

  6. 1.Git 安装

    Git的安装 阿里云镜像去下载 阿里云的镜像地址 卸载Git 1.首先在系统环境变量->path->里面去清理掉git相关的环境变量 2.然后控制面板卸载 安装Git 一直下一步即可 使用 ...

  7. SpringBoot连接Redis服务出现DENIED Redis is running in protected mode because protected mode is enabled

    修改redis.conf,yes 改为 no

  8. 将函数作为返回值的方法 - Python

    有的时候,我们需要将函数作为返回值,以下为代码: def superfunc(): i = 0 def wrapper(): nonlocal i i +=1 return i return wrap ...

  9. frame/iframe多表单切换

    应用场景: 在Web应用中经常会遇到frame/iframe表单嵌套页面的应用,WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌页面上的元素无法直接定位.这时就 ...

  10. selenium获取多窗口句柄并一切换至原窗口句柄(三个窗口)

    网上有很多是selenium基于python来获取两个窗口句柄与切换,本文实现用python+selenium获取多窗口句柄并一一切换至原窗口句柄(三个窗口),且在每个窗口下进行一个搜索或翻译,然后截 ...