页面的笔记本加载完成了,接下来就是点击笔记本显示将笔记显示,同时把笔记在右边的编辑器中,同时把编辑后的笔记更新。

  注:这个项目的sql文件,需求文档,需要的html文件,jar包都可以去下载,下载地址为:http://download.csdn.net/download/liveor_die/9985846

笔记列表显示

  前面我们把bookId通过下面的jq代码绑定在li上(笔记本的列表id=note_ul)

  1. $li.data("bookId",bookId);//将值与jQuery对象元素绑定

  通过点击笔记本触发加载笔记的事件

  1. $("#book_ul").on("click","li",loadBookNotes);

  触发的js代码如下,同时把noteId绑定在li上

  1. //根据笔记本ID加载笔记列表
  2. function loadBookNotes(){
  3. //设置选中效果
  4. $("#book_ul a").removeClass("checked");
  5. $(this).find("a").addClass("checked");
  6. //获取请求参数
  7. var bookId = $(this).data("bookId");
  8. //发送Ajax请求
  9. $.ajax({
  10. url:path+"/note/loadnotes.do",
  11. type:"post",
  12. data:{"bookId":bookId},
  13. dataType:"json",
  14. success:function(result){
  15. if(result.status==0){
  16. var notes = result.data;//获取笔记信息
  17. //清除原有笔记列表信息
  18. $("#note_ul li").remove();
  19. //$("#note_ul").empty();
  20. //循环处理
  21. for(var i=0;i<notes.length;i++){
  22. //获取笔记ID
  23. var noteId = notes[i].cn_note_id;
  24. //获取笔记标题
  25. var noteTitle = notes[i].cn_note_title;
  26. //创建一个笔记列表li元素
  27. createNoteLi(noteId,noteTitle);
  28. }
  29. }
  30. },
  31. error:function(){
  32. alert("加载笔记列表失败");
  33. }
  34. });
  35. };
  36. //创建笔记列表
  37. function createNoteLi(noteId,noteTitle){
  38. var sli = "";
  39. sli+='<li class="online">';
  40. sli+=' <a>';
  41. sli+=' <i class="fa fa-file-text-o" title="online" rel="tooltip-bottom"></i>';
  42. sli+= noteTitle;
  43. sli+=' <button type="button" class="btn btn-default btn-xs btn_position btn_slide_down"><i class="fa fa-chevron-down"></i></button>';
  44. sli+=' </a>';
  45. sli+=' <div class="note_menu" tabindex="-1">';
  46. sli+=' <dl>';
  47. sli+=' <dt><button type="button" class="btn btn-default btn-xs btn_move" title="移动至..."><i class="fa fa-random"></i></button></dt>';
  48. sli+=' <dt><button type="button" class="btn btn-default btn-xs btn_share" title="分享"><i class="fa fa-sitemap"></i></button></dt>';
  49. sli+=' <dt><button type="button" class="btn btn-default btn-xs btn_delete" title="删除"><i class="fa fa-times"></i></button></dt>';
  50. sli+=' </dl>';
  51. sli+=' </div>';
  52. sli+='</li>';
  53. //将笔记ID绑定到li元素上
  54. var $li = $(sli);
  55. $li.data("noteId",noteId);
  56. //将li元素添加笔记列表ul中
  57. $("#note_ul").append($li);
  58. };

发送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元素列表
  • 失败:提示加载笔记列表失败
  1. $(function(){
  2. //发送Ajax请求-->服务器端处理-->回调处理
  3. //给li绑定单击(可以给未来元素绑定on)
  4. 父元素.on("事件类型",子元素,fn处理);
  5. })

笔记加载到编辑器中

点击笔记将笔记的内容和标题显示到编辑器中。

  1. //点击笔记li加载笔记信息
  2. $("#note_ul").on("click","li",loadNote);
  1. //根据笔记ID加载笔记信息
  2. function loadNote(){
  3. //设置选中效果
  4. $("#note_ul a").removeClass("checked");
  5. $(this).find("a").addClass("checked");
  6. //获取请求参数
  7. var noteId = $(this).data("noteId");
  8. //发送Ajax请求
  9. $.ajax({
  10. url:path+"/note/load.do",
  11. type:"post",
  12. data:{"noteId":noteId},
  13. dataType:"json",
  14. success:function(result){
  15. if(result.status==0){
  16. //获取返回的笔记标题
  17. var title =result.data.cn_note_title;
  18. //获取返回的笔记内容
  19. var body =result.data.cn_note_body;
  20. body=body+"";
  21. //设置到编辑区
  22. $("#input_note_title").val(title);//设置笔记标题
  23. um.setContent(body);//设置笔记内容
  24. }
  25. },
  26. error:function(){
  27. alert("加载笔记信息失败");
  28. }
  29. });
  30. };

发送Ajax请求

  • 发送事件:笔记列表li元素的单击
  • 请求参数:笔记ID
  • 请求地址:/note/load.do

服务器端处理

/note/load.do

-->LoadNoteController.execute

-->NoteService.loadNote

-->NoteDao.findById

-->cn_note

-->返回JSON结果

Ajax回调处理

  • success:解析返回的JSON结果,将标题和内容

        显示到编辑区位置
  • error:alert("加载笔记信息失败");

更新笔记信息

点击保存笔记时,把编辑器中的文本信息获取到然后进行更新。

  1. //"保存按钮"的处理(更新笔记信息)
  2. $("#save_note").click(updateNote);
  1. //更新笔记信息
  2. function updateNote(){
  3. //获取请求参数
  4. var $li = $("#note_ul a.checked").parent();
  5. var noteId = $li.data("noteId");//笔记ID
  6. var noteTitle =$("#input_note_title").val().trim();//笔记标题
  7. var noteBody = um.getContent();//获取笔记内容
  8. //发送Ajax请求
  9. $.ajax({
  10. url:path+"/note/update.do",
  11. type:"post",
  12. data:{"noteId":noteId,"title":noteTitle,"body":noteBody},
  13. dataType:"json",
  14. success:function(result){
  15. if(result.status==0){
  16. //更新标题
  17. var str = "";
  18. str+='<i class="fa fa-file-text-o" title="online" rel="tooltip-bottom"></i>';
  19. str+= noteTitle;
  20. str+='<button type="button" class="btn btn-default btn-xs btn_position btn_slide_down"><i class="fa fa-chevron-down"></i></button>';
  21. //将str替换到笔记li的a元素里
  22. $li.find("a").html(str);
  23. //提示成功
  24. alert(result.msg);
  25. }
  26. },
  27. error:function(){
  28. alert("保存笔记失败");
  29. }
  30. });
  31. };

发送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版云笔记(四)的更多相关文章

  1. java版云笔记(九)之动态sql

    SQL 首先,所谓SQL的动态和静态,是指SQL语句在何时被编译和执行,二者都是用在SQL嵌入式编程中的,这里所说的嵌入式是指将SQL语句嵌入在高级语言中,而不是针对于单片机的那种嵌入式编程. 静态S ...

  2. java版云笔记(二)

    云笔记 基本的环境搭建好了,今天做些什么呢,第一是链接数据库(即搭建Spring-Batistas环境),第二是登录预注册. 注:这个项目的sql文件,需求文档,需要的html文件,jar包都可以去下 ...

  3. java版云笔记(一)

    云笔记项目 这个项目的sql文件,需求文档,需要的html文件,jar包都可以去下载,下载地址为:http://download.csdn.net/download/liveor_die/998584 ...

  4. java版云笔记(八)之关联映射

    Mybatis关联映射 通过数据库对象之间的关联关系,反映到到实体对象之间的引用. 加载多个表中的关联数据,封装到我们的实体对象中. 当业务对数据库进行关联查询. 关联 <association ...

  5. java版云笔记(七)之事务管理

    事务管理 事务:程序为了保证业务处理的完整性,执行的一条或多条SQL语句. 事务管理:对事务中的SQL语句进行提交或者回滚. 事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的 ...

  6. java版云笔记(六)之AOP

    今天主要是利用aop技术追加service的响应时间的计算和异常的日志记录. AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object O ...

  7. java版云笔记(五)

    下来是创建笔记本,创建笔记,这个没什么难点和前面是一样的. 创建笔记本 首先点击"+"弹出添加笔记的对话框,然后点击确定按钮创建笔记本. //点击"+"弹出添加 ...

  8. java版云笔记(三)

    登录与注册写好了下来就是主页,今天写的是主页加载时笔记本列表的显示,ajax是固定的就不重点说了.主要说一下jQuery.data() 函数和jQuery.on() 函数. 注:这个项目的sql文件, ...

  9. 第四篇 :微信公众平台开发实战Java版之完成消息接受与相应以及消息的处理

    温馨提示: 这篇文章是依赖前几篇的文章的. 第一篇:微信公众平台开发实战之了解微信公众平台基础知识以及资料准备 第二篇 :微信公众平台开发实战之开启开发者模式,接入微信公众平台开发 第三篇 :微信公众 ...

随机推荐

  1. QT 主窗口和子窗口相互切换示例

    QT 主窗口和子窗口相互切换示例 文件列表: SubWidget.h #ifndef SUBWIDGET_H #define SUBWIDGET_H #include <QtWidgets/QW ...

  2. Spring Boot系列教程六:日志输出配置log4j2

    一.前言  spring boot支持的日志框架有,logback,Log4j2,Log4j和Java Util  Logging,默认使用的是logback日志框架,笔者一直在使用log4j2,并且 ...

  3. Codeforces 744C. Hongcow Buys a Deck of Cards(状压DP)

    这题的难点在于状态的设计 首先显然是个状压,需要一维表示卡的状态,另一维如果设计成天数,难以知道当前的钱数,没法确定是否能够购买新的卡,如果设计成钱数,会发现状态数过多,空间与时间都无法承受.但是可以 ...

  4. 线性判别分析(Linear Discriminant Analysis)

    1. 问题 之前我们讨论的PCA.ICA也好,对样本数据来言,可以是没有类别标签y的.回想我们做回归时,如果特征太多,那么会产生不相关特征引入.过度拟合等问题.我们可以使用PCA来降维,但PCA没有将 ...

  5. mac和linux下sed使用的不同

    http://note.youdao.com/noteshare?id=84a6a0eb3e3f1698c9de4f48db24226e

  6. OD常见指令和快捷键

    声明: 1.本表来自各论坛.博客,欢迎补充讨论 指令 解释 OD汇编指令   NOP 无操作 PUSH 将数据压如堆栈中 POP 出栈(与PUSH相反) PUSHAD 所有通用寄存器的内容按一定顺序压 ...

  7. Linux常用网络工具:批量主机服务扫描之netcat

    netcat又叫做瑞士军刀,是黑客和系统管理员常用的网络工具,最初开发的目的是文件传输,后来发展出很多强大的功能,比如也可以完成批量主机服务扫描. 之前介绍了另一个更常用的批量主机服务扫描工具:nma ...

  8. mysql 如何解决字段不区分大小写的问题

    当我们输入不管大小写都能查询到数据,例如:输入 aaa 或者aaA ,AAA都能查询同样的结果,说明查询条件对大小写不敏感. 解决方案一: 于是怀疑Mysql的问题.做个实验:直接使用客户端用sql查 ...

  9. uboot&kernel&system

  10. VC6完整项目代码升级到VS2010

    VC6完整项目代码升级到VS2010,有需要请联系我,专业C++开发,邮箱153786575@qq.com