java版云笔记(四)
页面的笔记本加载完成了,接下来就是点击笔记本显示将笔记显示,同时把笔记在右边的编辑器中,同时把编辑后的笔记更新。
注:这个项目的sql文件,需求文档,需要的html文件,jar包都可以去下载,下载地址为:http://download.csdn.net/download/liveor_die/9985846
笔记列表显示
前面我们把bookId通过下面的jq代码绑定在li上(笔记本的列表id=note_ul)
$li.data("bookId",bookId);//将值与jQuery对象元素绑定
通过点击笔记本触发加载笔记的事件
$("#book_ul").on("click","li",loadBookNotes);
触发的js代码如下,同时把noteId绑定在li上
//根据笔记本ID加载笔记列表
function loadBookNotes(){
//设置选中效果
$("#book_ul a").removeClass("checked");
$(this).find("a").addClass("checked");
//获取请求参数
var bookId = $(this).data("bookId");
//发送Ajax请求
$.ajax({
url:path+"/note/loadnotes.do",
type:"post",
data:{"bookId":bookId},
dataType:"json",
success:function(result){
if(result.status==0){
var notes = result.data;//获取笔记信息
//清除原有笔记列表信息
$("#note_ul li").remove();
//$("#note_ul").empty();
//循环处理
for(var i=0;i<notes.length;i++){
//获取笔记ID
var noteId = notes[i].cn_note_id;
//获取笔记标题
var noteTitle = notes[i].cn_note_title;
//创建一个笔记列表li元素
createNoteLi(noteId,noteTitle);
}
}
},
error:function(){
alert("加载笔记列表失败");
}
});
};
//创建笔记列表
function createNoteLi(noteId,noteTitle){
var sli = "";
sli+='<li class="online">';
sli+=' <a>';
sli+=' <i class="fa fa-file-text-o" title="online" rel="tooltip-bottom"></i>';
sli+= noteTitle;
sli+=' <button type="button" class="btn btn-default btn-xs btn_position btn_slide_down"><i class="fa fa-chevron-down"></i></button>';
sli+=' </a>';
sli+=' <div class="note_menu" tabindex="-1">';
sli+=' <dl>';
sli+=' <dt><button type="button" class="btn btn-default btn-xs btn_move" title="移动至..."><i class="fa fa-random"></i></button></dt>';
sli+=' <dt><button type="button" class="btn btn-default btn-xs btn_share" title="分享"><i class="fa fa-sitemap"></i></button></dt>';
sli+=' <dt><button type="button" class="btn btn-default btn-xs btn_delete" title="删除"><i class="fa fa-times"></i></button></dt>';
sli+=' </dl>';
sli+=' </div>';
sli+='</li>';
//将笔记ID绑定到li元素上
var $li = $(sli);
$li.data("noteId",noteId);
//将li元素添加笔记列表ul中
$("#note_ul").append($li);
};
发送Ajax请求
- 发送事件:笔记本li元素的单击
- 请求参数:笔记本ID
- 请求地址:/note/loadnotes.do
服务器端处理
/note/loadnotes.do
-->LoadNotesController.execute
-->NoteService.loadBookNotes
-->NoteDao.findByBookId
-->cn_note(查询)
-->返回JSON结果
cn_user(用户)
cn_notebook(笔记本,cn_user_id)
cn_note(笔记,cn_notebook_id,cn_user_id)
Ajax回调处理
- 成功:解析服务器返回的JSON结果,提取
笔记信息,生成笔记li元素列表 - 失败:提示加载笔记列表失败
$(function(){
//发送Ajax请求-->服务器端处理-->回调处理
//给li绑定单击(可以给未来元素绑定on)
父元素.on("事件类型",子元素,fn处理);
})
笔记加载到编辑器中
点击笔记将笔记的内容和标题显示到编辑器中。
//点击笔记li加载笔记信息
$("#note_ul").on("click","li",loadNote);
//根据笔记ID加载笔记信息
function loadNote(){
//设置选中效果
$("#note_ul a").removeClass("checked");
$(this).find("a").addClass("checked");
//获取请求参数
var noteId = $(this).data("noteId");
//发送Ajax请求
$.ajax({
url:path+"/note/load.do",
type:"post",
data:{"noteId":noteId},
dataType:"json",
success:function(result){
if(result.status==0){
//获取返回的笔记标题
var title =result.data.cn_note_title;
//获取返回的笔记内容
var body =result.data.cn_note_body;
body=body+"";
//设置到编辑区
$("#input_note_title").val(title);//设置笔记标题
um.setContent(body);//设置笔记内容
}
},
error:function(){
alert("加载笔记信息失败");
}
});
};
发送Ajax请求
- 发送事件:笔记列表li元素的单击
- 请求参数:笔记ID
- 请求地址:/note/load.do
服务器端处理
/note/load.do
-->LoadNoteController.execute
-->NoteService.loadNote
-->NoteDao.findById
-->cn_note
-->返回JSON结果
Ajax回调处理
- success:解析返回的JSON结果,将标题和内容
显示到编辑区位置 - error:alert("加载笔记信息失败");
更新笔记信息
点击保存笔记时,把编辑器中的文本信息获取到然后进行更新。
//"保存按钮"的处理(更新笔记信息)
$("#save_note").click(updateNote);
//更新笔记信息
function updateNote(){
//获取请求参数
var $li = $("#note_ul a.checked").parent();
var noteId = $li.data("noteId");//笔记ID
var noteTitle =$("#input_note_title").val().trim();//笔记标题
var noteBody = um.getContent();//获取笔记内容
//发送Ajax请求
$.ajax({
url:path+"/note/update.do",
type:"post",
data:{"noteId":noteId,"title":noteTitle,"body":noteBody},
dataType:"json",
success:function(result){
if(result.status==0){
//更新标题
var str = "";
str+='<i class="fa fa-file-text-o" title="online" rel="tooltip-bottom"></i>';
str+= noteTitle;
str+='<button type="button" class="btn btn-default btn-xs btn_position btn_slide_down"><i class="fa fa-chevron-down"></i></button>';
//将str替换到笔记li的a元素里
$li.find("a").html(str);
//提示成功
alert(result.msg);
}
},
error:function(){
alert("保存笔记失败");
}
});
};
发送Ajax请求
- 发送事件:"保存笔记"按钮的单击
- 请求参数:笔记ID,笔记标题,笔记内容
- 请求地址:/note/update.do
服务器端处理
/note/update.do
-->UpdateNoteController.execute
-->NoteService.updateNote
-->NoteDao.update(Note note)
-->cn_note(更新)
-->返回JSON结果
Ajax回调处理
- success:alert提示保存笔记成功
- error:alert提示保存笔记失败
java版云笔记(四)的更多相关文章
- java版云笔记(九)之动态sql
SQL 首先,所谓SQL的动态和静态,是指SQL语句在何时被编译和执行,二者都是用在SQL嵌入式编程中的,这里所说的嵌入式是指将SQL语句嵌入在高级语言中,而不是针对于单片机的那种嵌入式编程. 静态S ...
- java版云笔记(二)
云笔记 基本的环境搭建好了,今天做些什么呢,第一是链接数据库(即搭建Spring-Batistas环境),第二是登录预注册. 注:这个项目的sql文件,需求文档,需要的html文件,jar包都可以去下 ...
- java版云笔记(一)
云笔记项目 这个项目的sql文件,需求文档,需要的html文件,jar包都可以去下载,下载地址为:http://download.csdn.net/download/liveor_die/998584 ...
- java版云笔记(八)之关联映射
Mybatis关联映射 通过数据库对象之间的关联关系,反映到到实体对象之间的引用. 加载多个表中的关联数据,封装到我们的实体对象中. 当业务对数据库进行关联查询. 关联 <association ...
- java版云笔记(七)之事务管理
事务管理 事务:程序为了保证业务处理的完整性,执行的一条或多条SQL语句. 事务管理:对事务中的SQL语句进行提交或者回滚. 事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的 ...
- java版云笔记(六)之AOP
今天主要是利用aop技术追加service的响应时间的计算和异常的日志记录. AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object O ...
- java版云笔记(五)
下来是创建笔记本,创建笔记,这个没什么难点和前面是一样的. 创建笔记本 首先点击"+"弹出添加笔记的对话框,然后点击确定按钮创建笔记本. //点击"+"弹出添加 ...
- java版云笔记(三)
登录与注册写好了下来就是主页,今天写的是主页加载时笔记本列表的显示,ajax是固定的就不重点说了.主要说一下jQuery.data() 函数和jQuery.on() 函数. 注:这个项目的sql文件, ...
- 第四篇 :微信公众平台开发实战Java版之完成消息接受与相应以及消息的处理
温馨提示: 这篇文章是依赖前几篇的文章的. 第一篇:微信公众平台开发实战之了解微信公众平台基础知识以及资料准备 第二篇 :微信公众平台开发实战之开启开发者模式,接入微信公众平台开发 第三篇 :微信公众 ...
随机推荐
- html/css/js 学习笔记 - 牛客网试卷:前端工程师能力评估
display属性 : block : CSS1 块对象的默认值.将对象强制作为块对象呈递,为对象之后添加新行 可以定义高度和宽度 none : CSS1 隐藏对象.与 visibility 属性 ...
- XML 增加属性
var resultDoc = new XmlDocument(); resultDoc.LoadXml("<root></root>"); resultD ...
- 快速傅里叶变换FFT / NTT
目录 FFT 系数表示法 点值表示法 复数 DFT(离散傅里叶变换) 单位根的性质 FFT(快速傅里叶变换) IFFT(快速傅里叶逆变换) NTT 阶 原根 扩展知识 FFT 参考blog: 十分简明 ...
- Docker学习笔记一:如何在线安装
一.Docker简介: Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...
- 【BZOJ4755】扭动的回文串(Manacher,哈希)
[BZOJ4755]扭动的回文串(Manacher,哈希) 题面 BZOJ 题解 不要真的以为看见了回文串就是\(PAM,Manacher\)一类就可以过. 这题显然不行啊. 我们主要考虑如何解决跨串 ...
- [NOIP2016 D1T3]换教室 【floyd+概率dp】
题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有 2n2n 节课程安排在 nn 个时间段上.在第 ii(1 \leq i \leq n1≤ ...
- 【bzoj4894】天赋
Portal-->bzoj4894 Solution 这题的话其实,一句话题意就是求..外向树(方向是根往叶子).. 然后关于有向图的生成树计数的话,求外向树就是将度数矩阵改成入度,内向树就是改 ...
- 框架----Django框架(基础篇)
一.基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: pyt ...
- openssl生成https证书、转换证书格式的各种相关操作
第一步:生成 private key.csr等文件 我们可能需要输入以下信息(交互式): --- Country Name (2 letter code) [AU]:US State or Provi ...
- mysql命令修改登录用户密码
方法1: 用SET PASSWORD命令 首先登录MySQL. 格式:mysql> set password for 用户名@localhost = password(‘新密码’); 例子:my ...