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困惑—包装集 DOM节点
Oct 16 Javascript
google 搜索框添加关键字实现代码
Apr 24 Javascript
jQuery $.get 的妙用 访问本地文本文件
Jul 12 Javascript
javascript自定义函数参数传递为字符串格式
Jul 29 Javascript
jQuery实现html表格动态添加新行的方法
May 28 Javascript
基于Jquery实现表单验证
Jul 20 Javascript
JS折半插入排序算法实例
Dec 02 Javascript
使用jQuery实现页面定时弹出广告效果
Aug 24 jQuery
Node.js自定义实现文件路由功能
Sep 22 Javascript
Node.js使用Koa搭建 基础项目
Jan 08 Javascript
微信小程序使用Promise简化回调
Feb 06 Javascript
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
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
关于PHP中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
深入PHP数据缓存的使用说明
2013/05/10 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
js Calender控件使用详解
2015/01/05 Javascript
基于JavaScript实现弹出框效果
2016/02/19 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
基于twbsPagination.js分页插件使用心得(分享)
2017/10/21 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
Python中函数的用法实例教程
2014/09/08 Python
在Python中使用__slots__方法的详细教程
2015/04/28 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
Python 文件处理注意事项总结
2017/04/10 Python
python3库numpy数组属性的查看方法
2018/04/17 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
构建高效的python requests长连接池详解
2020/05/02 Python
计算机网络专业自荐信
2014/07/04 职场文书
先进典型发言材料
2014/12/30 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
2021/04/29 HTML / CSS
详解Java实践之抽象工厂模式
2021/06/18 Java/Android
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技