zoukankan      html  css  js  c++  java
  • AJAX异步更改数据库

    前段时间做了一个小网站,里面有个小功能感觉挺好的,在此与大家分享一下,还请各位大神不要笑话小弟的无知大笑

    此功能大概是这个样子的:点击下图中的类别名称,就可以对类别进行修改。

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

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

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

    数据库修改前              数据库修改后

    用到的js代码

    [javascript] view plain copy
     
    1. /********************************************** 
    2. 创建人:刘水镜 
    3. 说明:    可编辑的表格 
    4. **********************************************/  
    5.   
    6. $(function () {    // 相当于在页面中的body标签加上onload事件  
    7.     $(".caname").click(function () {   // 给页面中有caname类的标签加上click函数  
    8.         var objTD = $(this);  
    9.         var oldText = $.trim(objTD.text());  // 保存老的类别名称  
    10.         var input = $("<input type='text' value='" + oldText + "' />"); // 文本框的HTML代码  
    11.         objTD.html(input);   // 当前td的内容变为文本框  
    12.         // 设置文本框的点击事件失效  
    13.         input.click(function () {  
    14.             return false;  
    15.         });  
    16.         // 设置文本框的样式  
    17.         input.css("border-width", "0px");  //边框为0  
    18.         input.height(objTD.height());   //文本框的高度为当前td单元格的高度  
    19.         input.width(objTD.width());    // 宽度为当前td单元格的宽度  
    20.         input.css("font-size", "16px");    // 文本框的内容文字大小为16px  
    21.         input.css("text-align", "center");   // 文本居中  
    22.         input.trigger("focus").trigger("select");   // 全选  
    23.   
    24.         // 文本框失去焦点时重新变为文本  
    25.         input.blur(function () {  
    26.             var newText = $(this).val(); // 修改后的名称  
    27.             var input_blur = $(this);  
    28.   
    29.             // 当老的类别名称与修改后的名称不同的时候才进行数据的提交操作  
    30.             if (oldText != newText) {  
    31.                 // 获取该类别名所对应的ID(序号)  
    32.                 var caid = $.trim(objTD.prev().text());  
    33.                 // AJAX异步更改数据库  
    34.                 var url = "../handler/ChangeCaName.ashx?caname=" + encodeURI(encodeURI(newText)) + "&caid=" + caid + "&t=" + new Date().getTime();  
    35.                 $.get(url, function (data) {  
    36.                     if (data == "false") {  
    37.                         alert("类别修改失败,请检查是否类别名称重复!");  
    38.                         input_blur.trigger("focus").trigger("select");   // 文本框全选  
    39.                     } else {  
    40.                         $("#test").text("");  
    41.                         objTD.html(newText);  
    42.                     }  
    43.                 });  
    44.             } else {  
    45.                 // 前后文本一致,把文本框变成标签  
    46.                 objTD.html(newText);  
    47.             }  
    48.         });  
    49.   
    50.         // 在文本框中按下键盘某键  
    51.         input.keydown(function (event) {  
    52.             var jianzhi = event.keyCode;  
    53.             var input_keydown = $(this);  
    54.   
    55.             switch (jianzhi) {  
    56.                 case 13: // 按下回车键 ,把修改后的值提交到数据库  
    57.                     // $("#test").text("您按下的键值是: " + jianzhi);  
    58.                     var newText = input_keydown.val(); // 修改后的名称  
    59.                     // 当老的类别名称与修改后的名称不同的时候才进行数据的提交操作  
    60.                     if (oldText != newText) {  
    61.                         // 获取该类别名所对应的ID(序号)  
    62.                         var caid = $.trim(objTD.prev().text());  
    63.                         // AJAX异步更改数据库  
    64.                         var url = "../handler/ChangeCaName.ashx?caname=" + encodeURI(encodeURI(newText)) + "&caid=" + caid + "&t=" + new Date().getTime();  
    65.                         $.get(url, function (data) {  
    66.                             if (data == "false") {                                 
    67.                                 alert("类别修改失败,请检查是否类别名称重复!");  
    68.                                 input_keydown.trigger("focus").trigger("select");   // 文本框全选  
    69.                             } else {  
    70.                                 $("#test").text("");  
    71.                                 objTD.html(newText);  
    72.                             }  
    73.                         });  
    74.                     } else {  
    75.                         // 前后文本一致,把文本框变成标签  
    76.                         objTD.html(newText);  
    77.                     }  
    78.                     break;  
    79.                 case 27: // 按下Esc键, 取消修改,把文本框变成标签  
    80.                     $("#test").text("");  
    81.                     objTD.html(oldText);  
    82.                     break;  
    83.             }  
    84.         });  
    85.   
    86.     });  
    87. });  
    88.   
    89.   
    90. // 屏蔽Enter按键  
    91. $(document).keydown(function (event) {  
    92.     switch (event.keyCode) {  
    93.         case 13: return false;  
    94.     }  
    95. });   





    一般处理程序代码

    [csharp] view plain copy
     
    1. using System;  
    2. using System.Collections.Generic;  
    3. using System.Linq;  
    4. using System.Web;  
    5. using Model;using BLL;  
    6. namespace Web.handler  
    7. {  
    8.      /// <summary>   
    9.      /// ChangeCaName 的摘要说明   
    10.      /// </summary>   
    11.      public class ChangeCaName : IHttpHandler   
    12.      {   
    13.          public void ProcessRequest(HttpContext context)   
    14.          {   
    15.              context.Response.ContentType = "text/plain";   
    16.              string caid = context.Request.QueryString["caid"];   
    17.              string caname =context.Server.UrlDecode (context.Request.QueryString["caname"]);   
    18.              Category ca = new Category(caid, caname);   
    19.                
    20.              //判断是否已有该类别名   
    21.              CategoryManger camgr = new CategoryManger();  
    22.                
    23.              if (camgr.IsExist(caname))   
    24.              {   
    25.                  //存在   
    26.                  context.Response.Write("false");  
    27.                  return;   
    28.              }   
    29.              //更改数据库类别名   
    30.              bool b=camgr.Update( ca);   
    31.              if (b)   
    32.              {   
    33.                 context.Response.Write("true");   
    34.              }   
    35.              else   
    36.              {   
    37.                 context.Response.Write("false");   
    38.              }   
    39.          }   
    40.            
    41.          public bool IsReusable   
    42.          {   
    43.             get { return false; }   
    44.          }   
    45.      }  
    46.  }  

    功能很简单,但用起来却非常的方便,个人觉得很好,请各位大神不要笑话在下的才疏学浅。

    另外实现此效果需要用到JQuery的函数,在此附上JQuery的下载,有需要的朋友拿去。

    jQuery源文件

  • 相关阅读:
    weblogic中server的启动
    oracle connect by
    DBA常用的一些视图和sql
    查询分类并实现分类统计SQL存储过程
    从一组数据中寻找第K大的数
    一个关于StringBuilder延伸类
    总结.net的技术特性
    C#Reflection学习记录
    Asp.net 安全补丁发布
    比较无聊的while与for的较量。
  • 原文地址:https://www.cnblogs.com/perrybalabala/p/5784083.html
Copyright © 2011-2022 走看看