AJAX异步更改数据库
前段时间做了一个小网站,里面有个小功能感觉挺好的,在此与大家分享一下,还请各位大神不要笑话小弟的无知
。
此功能大概是这个样子的:点击下图中的类别名称,就可以对类别进行修改。

点击类别名称以后,原来的表格变成一个可编辑的文本框,并全选里面的内容,此时可直接进行修改。回车或者鼠标点击其他地方,提交修改内容.

如果不做修改点击别处或者按“Esc”或回车键,就会回到之前的样子,如果修改后跟其他类名重复就会有相应的提示:

如果类名没问题就会将修改后的内容显示到页面,同时会修改数据库的值。



数据库修改前 数据库修改后
用到的js代码
- /**********************************************
- 创建人:刘水镜
- 说明: 可编辑的表格
- **********************************************/
- $(function () { // 相当于在页面中的body标签加上onload事件
- $(".caname").click(function () { // 给页面中有caname类的标签加上click函数
- var objTD = $(this);
- var oldText = $.trim(objTD.text()); // 保存老的类别名称
- var input = $("<input type='text' value='" + oldText + "' />"); // 文本框的HTML代码
- objTD.html(input); // 当前td的内容变为文本框
- // 设置文本框的点击事件失效
- input.click(function () {
- return false;
- });
- // 设置文本框的样式
- input.css("border-width", "0px"); //边框为0
- input.height(objTD.height()); //文本框的高度为当前td单元格的高度
- input.width(objTD.width()); // 宽度为当前td单元格的宽度
- input.css("font-size", "16px"); // 文本框的内容文字大小为16px
- input.css("text-align", "center"); // 文本居中
- input.trigger("focus").trigger("select"); // 全选
- // 文本框失去焦点时重新变为文本
- input.blur(function () {
- var newText = $(this).val(); // 修改后的名称
- var input_blur = $(this);
- // 当老的类别名称与修改后的名称不同的时候才进行数据的提交操作
- if (oldText != newText) {
- // 获取该类别名所对应的ID(序号)
- var caid = $.trim(objTD.prev().text());
- // AJAX异步更改数据库
- var url = "../handler/ChangeCaName.ashx?caname=" + encodeURI(encodeURI(newText)) + "&caid=" + caid + "&t=" + new Date().getTime();
- $.get(url, function (data) {
- if (data == "false") {
- alert("类别修改失败,请检查是否类别名称重复!");
- input_blur.trigger("focus").trigger("select"); // 文本框全选
- } else {
- $("#test").text("");
- objTD.html(newText);
- }
- });
- } else {
- // 前后文本一致,把文本框变成标签
- objTD.html(newText);
- }
- });
- // 在文本框中按下键盘某键
- input.keydown(function (event) {
- var jianzhi = event.keyCode;
- var input_keydown = $(this);
- switch (jianzhi) {
- case 13: // 按下回车键 ,把修改后的值提交到数据库
- // $("#test").text("您按下的键值是: " + jianzhi);
- var newText = input_keydown.val(); // 修改后的名称
- // 当老的类别名称与修改后的名称不同的时候才进行数据的提交操作
- if (oldText != newText) {
- // 获取该类别名所对应的ID(序号)
- var caid = $.trim(objTD.prev().text());
- // AJAX异步更改数据库
- var url = "../handler/ChangeCaName.ashx?caname=" + encodeURI(encodeURI(newText)) + "&caid=" + caid + "&t=" + new Date().getTime();
- $.get(url, function (data) {
- if (data == "false") {
- alert("类别修改失败,请检查是否类别名称重复!");
- input_keydown.trigger("focus").trigger("select"); // 文本框全选
- } else {
- $("#test").text("");
- objTD.html(newText);
- }
- });
- } else {
- // 前后文本一致,把文本框变成标签
- objTD.html(newText);
- }
- break;
- case 27: // 按下Esc键, 取消修改,把文本框变成标签
- $("#test").text("");
- objTD.html(oldText);
- break;
- }
- });
- });
- });
- // 屏蔽Enter按键
- $(document).keydown(function (event) {
- switch (event.keyCode) {
- case 13: return false;
- }
- });
一般处理程序代码
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using Model;using BLL;
- namespace Web.handler
- {
- /// <summary>
- /// ChangeCaName 的摘要说明
- /// </summary>
- public class ChangeCaName : IHttpHandler
- {
- public void ProcessRequest(HttpContext context)
- {
- context.Response.ContentType = "text/plain";
- string caid = context.Request.QueryString["caid"];
- string caname =context.Server.UrlDecode (context.Request.QueryString["caname"]);
- Category ca = new Category(caid, caname);
- //判断是否已有该类别名
- CategoryManger camgr = new CategoryManger();
- if (camgr.IsExist(caname))
- {
- //存在
- context.Response.Write("false");
- return;
- }
- //更改数据库类别名
- bool b=camgr.Update( ca);
- if (b)
- {
- context.Response.Write("true");
- }
- else
- {
- context.Response.Write("false");
- }
- }
- public bool IsReusable
- {
- get { return false; }
- }
- }
- }
功能很简单,但用起来却非常的方便,个人觉得很好,请各位大神不要笑话在下的才疏学浅。
另外实现此效果需要用到JQuery的函数,在此附上JQuery的下载,有需要的朋友拿去。
AJAX异步更改数据库的更多相关文章
- python操作三大主流数据库(6)python操作mysql⑥新闻管理后台功能的完善(增、ajax异步删除新闻、改、查)
python操作mysql⑥新闻管理后台功能的完善(增.删.改.查)安装表单验证D:\python\python_mysql_redis_mongodb\version02>pip instal ...
- 使用 jQuery Ajax 异步登录,并验证用户输入信息(maven)
使用 jQuery Ajax 异步登录,并验证用户输入信息(maven) 本篇内容: (1)上一篇是使用同步的请求实现登录,并由 Servlet 决定登陆后下一步做哪些事情,本篇使用 jQuery A ...
- 淘宝购物车页面 智能搜索框Ajax异步加载数据
如果有朋友对本篇文章的一些知识点不了解的话,可以先阅读此篇文章.在这篇文章中,我大概介绍了一下构建淘宝购物车页面需要的基础知识. 这篇文章主要探讨的是智能搜索框Ajax异步加载数据.jQuery的社区 ...
- 触碰jQuery:AJAX异步详解
触碰jQuery:AJAX异步详解 传送门:异步编程系列目录…… 示例源码:触碰jQuery:AJAX异步详解.rar AJAX 全称 Asynchronous JavaScript and XML( ...
- JSON.stringify实例应用—将对象转换成JSON类型进行AJAX异步传值
在上一篇中,对JSON.stringify()方法有了初步的认识,并且做了一些简单的例子.本篇将进一步将JSON.stringify用在复杂些的实例中,例如如下需求: 在进jQuery AJAX异步传 ...
- html5+php实现文件的断点续传ajax异步上传
html5+php实现文件的断点续传ajax异步上传 准备知识:断点续传,既然有断,那就应该有文件分割的过程,一段一段的传.以前文件无法分割,但随着HTML5新特性的引入,类似普通字符串.数组的分割, ...
- jQuery调用AJAX异步详解[转]
AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).它并非一种新的技术,而是以下几种原有技术的结合体. 1) 使用CSS和X ...
- PHP+Ajax 异步通讯注册验证
HTML代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- Mvc音乐商店demo的ajax异步删除功能总结
刚刚从学校出来参加工作,没啥工作经验,所以各位大神们不要嘲笑哈! 来公司后要进行培训,给我们的作业中有一个使用 dapper+mvc+ajax+SQL Server 2008,来实现一个音乐商店的de ...
随机推荐
- C# HTTP系列1 HttpWebRequest类
系列目录 [已更新最新开发文章,点击查看详细] .NET Framework 中 System.Net 命名空间下提供了 HttpWebRequest 和 HttpWebResponse 2个 ...
- Java判断Integer类型的值是否相等
我们知道Integer是int的包装类,在jdk1.5以上,可以实现自动装箱拆箱,就是jdk里面会自动帮我们转换,不需要我们手动去强转,所以我们经常在这两种类型中随意写,平时也没什么注意 但Integ ...
- js原型和原型链,以及__proto__、prototype属性
__proto__和prototype属性: 1.__proto__属性: 在JS里,万物皆对象(函数是对象.原型也是对象...).对象都具有属性__proto__,这个属性会指向该对象的原型. 2. ...
- Intellij插件之Alibaba Java Coding Guidelines
作用: 阿里巴巴出品的java代码规范插件,可以扫描整个项目找到不规范的地方 并且大部分可以自动修复 .虽说检测功能没有findbugs强大,但是可以自 动修复,阿里巴巴Java编码指南插件支持. 插 ...
- Supervisor-守护进程工具
前言 手头上的服务器程序1.0版本终于要进入线上测试阶段了
- Python文件读写机制
Python提供了必要的函数和方法进行默认情况下的文件基本操作 文件打开方式: open(name[,mode[buf]]) name:文件路径 mode:打开方式 buf:缓冲buffering大小 ...
- linux kernel debug
1. sysrq http://www.chinaunix.net/old_jh/4/902287.html 常用的SysRq命令(序列) 重启机器的SysRq命令序列是 k(SAK) s(sync ...
- lua中,两种json和table互转方法的效率比较
lua中json和table的互转,是我们在平时开发过程中经常用到的.比如: 在用lua编写的服务器中,如果客户端发送json格式的数据,那么在lua处理业务逻辑的时候,必然需要转换成lua自己的数据 ...
- Centos7/Ubuntu 初始化硬盘分区、挂载
刚刚在腾讯云买了一台服务器,刚买的服务器的数据盘都是需要自己来分区的,下面就记录一下操作. 通过命令fdisk-l查看硬盘信息 可以看到有两块硬盘/dev/vda和/dev/vdb,启动vda是系统盘 ...
- JavaScript 加减危机——为什么会出现这样的结果?
在日常工作计算中,我们如履薄冰,但是 JavaScript 总能给我们这样那样的 surprise~ 0.1 + 0.2 = ? 1 - 0.9 = ? 如果小伙伴给出内心的结果: 0.1 + 0.2 ...