Jquery+Ajax+PHP+MySQL实现分类列表管理(下)


Posted in Javascript onOctober 28, 2015

在上篇中,我们详细讲解了如何实现列表管理的新增和删除操作,可以看出,前端页面通过ajax与后台通信,根据后台处理结果响应前端页面交互操作,这是一个很典型的Ajax和JSON应用的例子。
本文将继续上篇文中的示例,完成编辑操作。
编辑项操作
用户通过单击“编辑”按钮,相应的项会立即变为编辑状态,出现一个输入框,用户可以重新输入新的内容,然后点击“保存”按钮完成编辑操作,也可以单击“取消”按钮取消编辑状态。
首先,通过单击“编辑”按钮,实现编辑状态,在global.js的$(function(){...})中加入如下代码:

//编辑选项 
$(".edit").live('click',function(){ 
  $(this).removeClass('edit').addClass('oks').attr('title','保存'); 
  $(this).prev().removeClass('del').addClass('cancer').attr('title','取消'); 
  var str = $(this).parent().text(); 
  var input = "<input type='text' class='input' value='"+str+"' />"; 
  $(this).next().wrapInner(input); 
});

从代码中可以看出,其实是改变了“编辑”按钮和“删除”按钮的class样式,修改了其title属性,然后将分类名称用一个input输入框包裹(wrapInner),这样就生成了一个编辑状态。
要将修改好的内容提交给后台处理,通过单击“保存”按钮,会发生下面的事情,请看代码:

//编辑处理 
$(".oks").live('click',function(){ 
  var input_str = $(this).parent().find('input').val(); 
  if(input_str==""){ 
    jNotify("请输入类别名称!"); 
    return false; 
  } 
  var str = escape(input_str); 
  var id = $(this).parent().attr("rel"); 
  var URL = "post.php?action=edit"; 
     
  var btn = $(this); 
  $.ajax({ 
      type: "POST", 
      url: URL, 
      data: "title="+str+"&id="+id, 
      success: function(msg){ 
        if(msg==1){ 
          jSuccess("编辑成功!"); 
          var strs = "<span class='del' title='删除'></span><span class='edit' 
          title='编辑'></span><span class='txt'>"+input_str+"</span>; 
          btn.parent().html(strs); 
        }else{ 
          jNotify("操作失败!"); 
          return false; 
        } 
      } 
  }); 
});

通过单击编辑状态下的“保存”按钮,首先获取输入框的内容,如果没有输入任何内容则提示用户输入内容,然后将用户输入的内容进行escape编码,同时还要获取编辑项对应的ID,将输入的内容和ID作为参数通过$.ajax提交给后台post.php处理,并响应后台返回的信息,如果返回成功,则提示用户“编辑成功”,并且解除编辑状态,如果返回失败,则提示用户“操作失败”。
后台post.php处理编辑项操作与上篇的新增项操作差不多,代码如下:

case 'edit': //编辑项 
  $id = $_POST['id']; 
  $title = uniDecode($_POST['title'],'utf-8'); 
  $title = htmlspecialchars($title,ENT_QUOTES); 
  $query = mysql_query("update catalist set title='$title' where cid='$id'"); 
  if($query){ 
    echo '1'; 
  }else{ 
    echo '2'; 
  } 
  break;

以上代码片段加在post.php的switch语句中,代码接收了前端传来的id和title参数,并对title参数进行解码,然后更新数据表中对应的项,并输出执行结果给前台处理。
要取消编辑状态,则通过单击“取消”执行以下代码:

//取消编辑 
$(".cancer").live('click',function(){ 
  var li = $(this).parent().html(); 
  var str_1 = $(this).parent().find('input').val(); 
  var strs = "<span class='del' title='删除'></span><span class='edit' title='编辑'> 
  </span><span class='txt'>"+str_1+"</span>"; 
  $(this).parent().html(strs); 
});

其实,代码重新组装了一个字符串,重新将组装的字符串替代了编辑状态,即取消了编辑状态。
通过这样一个实际应用的案例,我们可以体验前端技术的优越性,用户完成的每一步操作是那么的友好,这是用户体验的一个方面。Jquery库让ajax操作变得如此简单,文中代码中还用到了jquery的live方法,这是为了绑定动态创建DOM元素所必需的。

上面两篇就是小编为大家整理的关于Jquery+Ajax+PHP+MySQL实现分类列表管理的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
jQuery TextBox自动完成条
Jul 22 Javascript
jQuery实现隔行背景色变色
Nov 24 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
Mar 04 Javascript
js实现鼠标滑过文字链接色彩变化的效果
May 06 Javascript
浏览器中url存储的JavaScript实现
Jul 07 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
Sep 03 Javascript
Vue.js组件使用开发实例教程
Nov 01 Javascript
Node.js dgram模块实现UDP通信示例代码
Sep 26 Javascript
使用Vue完成一个简单的todolist的方法
Dec 01 Javascript
使用node打造自己的命令行工具方法教程
Mar 26 Javascript
深入解析vue 源码目录及构建过程分析
Apr 24 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
Jul 29 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
Oct 28 #Javascript
自己动手写的jquery分页控件(非常简单实用)
Oct 28 #Javascript
Jquery日历插件制作简单日历
Oct 28 #Javascript
使用CoffeeScrip优美方式编写javascript代码
Oct 28 #Javascript
开启Javascript中apply、call、bind的用法之旅模式
Oct 28 #Javascript
JavaScript多并发问题如何处理
Oct 28 #Javascript
JS实现双击屏幕滚动效果代码
Oct 28 #Javascript
You might like
javascript cookies操作集合
2010/04/12 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
表单验证插件Validation应用的实例讲解
2015/10/10 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
Jquery树插件zTree实现菜单树
2017/01/24 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python基于动态规划算法计算单词距离
2015/07/25 Python
python黑魔法之参数传递
2016/02/12 Python
Python中模块与包有相同名字的处理方法
2017/05/05 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
在python中做正态性检验示例
2019/12/09 Python
Django 解决distinct无法去除重复数据的问题
2020/05/20 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
html5用video标签流式加载的实现
2020/05/20 HTML / CSS
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
大学生个人简历中的自我评价
2013/12/27 职场文书
共青团员自我评价范文
2014/09/14 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
学生保证书格式
2015/02/27 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书