一套手写ajax加一般处理程序的增删查改

倾述下感受:8天16次驳回。这个惨不忍睹。

好了不说了,说多了都是泪。

直接上代码 :

这个里面的字段我是用动软生成的,感觉自己手写哪些字段太浪费时间了,说多了都是泪

ajax.model层的代码:

using System;
namespace Ajax.Model
{
    /// <summary>
    /// SM_Class:实体类(属性说明自动提取数据库字段的描述信息)
    /// </summary>
    [Serializable]
    public partial class SM_Class
    {
        public SM_Class()
        {}
        #region Model
        private int _sm_id;
        private string _sm_name;
        private string _sm_grade;
        private string _sm_class;
        private string _sm_gender;
        private int? _sm_age;
        private DateTime _sm_outtime;
        private bool _sm_istf;
        /// <summary>
        ///
        /// </summary>
        public int SM_id
        {
            set{ _sm_id=value;}
            get{return _sm_id;}
        }
        /// <summary>
        ///
        /// </summary>
        public string SM_name
        {
            set{ _sm_name=value;}
            get{return _sm_name;}
        }
        /// <summary>
        ///
        /// </summary>
        public string SM_Grade
        {
            set{ _sm_grade=value;}
            get{return _sm_grade;}
        }
        /// <summary>
        ///
        /// </summary>
        public string SM_Classes
        {
            set{ _sm_class=value;}
            get{return _sm_class;}
        }
        /// <summary>
        ///
        /// </summary>
        public string SM_Gender
        {
            set{ _sm_gender=value;}
            get{return _sm_gender;}
        }
        /// <summary>
        ///
        /// </summary>
        public int? SM_Age
        {
            set{ _sm_age=value;}
            get{return _sm_age;}
        }
        /// <summary>
        ///
        /// </summary>
        public DateTime SM_OutTime
        {
            set{ _sm_outtime=value;}
            get{return _sm_outtime;}
        }
        /// <summary>
        ///
        /// </summary>
        public bool SM_Istf
        {
            set{ _sm_istf=value;}
            get{return _sm_istf;}
        }
        #endregion Model

    }
}

ajax.dal层代码:

第一个先上数据库连接帮助类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ajax.DAL
{
    //需要系统配置;系统设定;系统设置;查看系统配置程序集
    using System.Configuration;
    using System.Data.SqlClient;
    using System.Data;
   public class HelperSQL
    {
        //在ui的配置文件中配置AppSettings
       public static string str = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];

       private static SqlConnection connection;
       public static SqlConnection Connection {
           get {
               //判断是否有这个连接没有
               if (connection == null) {
                   //创建连接
                   connection = new SqlConnection(str);
                   //打开连接
                   connection.Open();
               }
                   //判断连接是否是关闭的
               else if(connection.State==System.Data.ConnectionState.Closed){
                   //打开连接
                   connection.Open();
               }
                   //判断连接是否中断
               else if (connection.State == System.Data.ConnectionState.Broken) {
                   //先关闭连接
                   connection.Close();
                   //打开连接
                   connection.Open();
               }
               //返回连接
               return connection;
           }
       }

       public static int ExecuteCommand(string strsql)
       {
           //传入数据库命令和连接
           SqlCommand sqlcmd = new SqlCommand(strsql, Connection);
           //执行语句返回受影响的行数
           int result = sqlcmd.ExecuteNonQuery();
           return result;
       }
       public static int ExecuteCommand(string strName, params SqlParameter[] values)
       {
           //传入数据库命令和连接
           SqlCommand sqlcmd = new SqlCommand(strName, Connection);
           //增加参数
           sqlcmd.Parameters.AddRange(values);
           return sqlcmd.ExecuteNonQuery();
       }

       public static DataSet GetDataSet(string strName)
       {
           //创建一个内存缓存
           DataSet ds = new DataSet();
           //传入命令和连接
           SqlCommand sqlcmd = new SqlCommand(strName, Connection);
           //创建一个桥接器
           SqlDataAdapter sqlda = new SqlDataAdapter(sqlcmd);
           //写入内存
           sqlda.Fill(ds);
           //返回
           return ds;
       }

       public static DataSet GetDataSet(string strName, params SqlParameter[] values)
       {
           //创建一个内存缓存
           DataSet ds = new DataSet();
           //传入命令和连接
           SqlCommand sqlcmd = new SqlCommand(strName, Connection);
           //增加参数
           sqlcmd.Parameters.AddRange(values);
           //打开桥连接
           SqlDataAdapter sqlda = new SqlDataAdapter(sqlcmd);
           //写入到内存
           sqlda.Fill(ds);
           //返回
           return ds;
       }

       public static DataSet StoredProcedure(string strName, params IDataParameter[] parmenters)
       {
           using (SqlConnection connection = new SqlConnection(str))
           {
               //创建一个内存缓存
               DataSet ds = new DataSet();
               //创建一个桥连接
               SqlDataAdapter sqlda = new SqlDataAdapter();
               //告诉桥连接这个是存储过程
               sqlda.SelectCommand = StoredProcedureCommand(connection, strName, parmenters);
               //写入内存
               sqlda.Fill(ds);
              //返回
               return ds;
           }
       }
       private static SqlCommand StoredProcedureCommand(SqlConnection sqlcc, string strName, IDataParameter[] parmenters) {
           //传入存储过程名称和连接数据库命令
           SqlCommand sqlcmd = new SqlCommand(strName, sqlcc);
           //告诉数据库这个是存储过程
           sqlcmd.CommandType = CommandType.StoredProcedure;
           foreach (var item in parmenters)
           {
               if (item !=null)
               {
                   //判断的参数是输入输出或者参数是输入并且参数不能为空
                   if ((item.Direction==ParameterDirection.InputOutput||

                       item.Direction==ParameterDirection.Input  )&&

                       (item.Value==null))
                   {
                       //该类区分空值(空对象)和未初始化值
                       item.Value = DBNull.Value;
                   }
                   //加入这个参数
                   sqlcmd.Parameters.Add(item);
               }
           }
           //返回连接和命令
           return sqlcmd;
       }
   }
}

ajax.dal 实现的增删查改

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ajax.DAL
{
    using Ajax.Model;
    using System.Data;
    using System.Data.SqlClient;
  public   class AjaxSM_Class
    {
      /// <summary>
      /// 新增
      /// </summary>
      /// <param name="model"></param>
      /// <returns></returns>
      public int Add(SM_Class model) {
          StringBuilder strSql = new StringBuilder();
          strSql.Append("insert into SM_Class(");
          strSql.Append("SM_name,SM_Grade,SM_Class,SM_Gender,SM_Age,SM_OutTime,SM_Istf)");
          strSql.Append(" values (");
          strSql.Append("@SM_name,@SM_Grade,@SM_Class,@SM_Gender,@SM_Age,@SM_OutTime,@SM_Istf)");
          strSql.Append(";select @@IDENTITY");
          SqlParameter[] parameters = {
                    new SqlParameter("@SM_name", SqlDbType.VarChar,20),
                    new SqlParameter("@SM_Grade", SqlDbType.VarChar,20),
                    new SqlParameter("@SM_Class", SqlDbType.VarChar,20),
                    new SqlParameter("@SM_Gender", SqlDbType.VarChar,4),
                    new SqlParameter("@SM_Age", SqlDbType.Int,4),
                    new SqlParameter("@SM_OutTime", SqlDbType.DateTime),
                    new SqlParameter("@SM_Istf", SqlDbType.Bit,1)};
          parameters[0].Value = model.SM_name;
          parameters[1].Value = model.SM_Grade;
          parameters[2].Value = model.SM_Classes;
          parameters[3].Value = model.SM_Gender;
          parameters[4].Value = model.SM_Age;
          parameters[5].Value = model.SM_OutTime;
          parameters[6].Value = model.SM_Istf;

          object obj = HelperSQL.ExecuteCommand(strSql.ToString(), parameters);
          if (obj == null)
          {
              return 0;
          }
          else
          {
              return Convert.ToInt32(obj);
          }

      }
      /// <summary>
      /// 删除
      /// </summary>
      /// <param name="SM_id"></param>
      /// <returns></returns>
      public int Delete(int SM_id)
      {

          StringBuilder strSql = new StringBuilder();
          strSql.Append("UPDATE SM_Class SET SM_Istf=0  ");
          strSql.Append("  WHERE [email protected]_id");
          SqlParameter[] parameters = {
                    new SqlParameter("@SM_id", SqlDbType.Int,4)
            };
          parameters[0].Value = SM_id;

          int rows = HelperSQL.ExecuteCommand(strSql.ToString(), parameters);
          return rows;
      }

      /// <summary>
      /// 获得所有数据
      /// </summary>
      /// <param name="strWhere"></param>
      /// <returns></returns>
      public List<SM_Class> GetList()
      {
          StringBuilder strSql = new StringBuilder();
          List<SM_Class> list = new List<SM_Class>();
          strSql.Append("select SM_id,SM_name,SM_Grade,SM_Class,SM_Gender,SM_Age,SM_OutTime,SM_Istf ");
          strSql.Append(" FROM SM_Class ");
         //获取dataset从表中读取
          DataSet ds= HelperSQL.GetDataSet(strSql.ToString());
          DataTable dt = ds.Tables[0];
          foreach (DataRow item in dt.Rows)
          {
              //得到一个sm_class 类
              SM_Class smc = DataModel(item);
              //加入到list集合中
              list.Add(smc);
          }
          return list;
      }
      /// <summary>
      /// 更具id找一条数据
      /// </summary>
      /// <param name="SM_id"></param>
      /// <returns></returns>
      public List<SM_Class> GetList( int  SM_id) {
          StringBuilder strSql = new StringBuilder();
          List<SM_Class> list = new List<SM_Class>();
          strSql.Append("select  top 1 SM_id,SM_name,SM_Grade,SM_Class,SM_Gender,SM_Age,SM_OutTime,SM_Istf from SM_Class ");
          strSql.Append("  where [email protected]_id");
          SqlParameter[] parameters = {
                    new SqlParameter("@SM_id", SqlDbType.Int,4)
            };
          parameters[0].Value = SM_id;
          DataSet ds = HelperSQL.GetDataSet(strSql.ToString(),parameters);
          DataTable dt = ds.Tables[0];
          foreach (DataRow item in dt.Rows)
          {
              //得到一个sm_class 类
              SM_Class smc = DataModel(item);
              //加入到list集合中
              list.Add(smc);
          }
          return list;
      }
      /// <summary>
      /// 得到一个实体
      /// </summary>
      /// <param name="row"></param>
      /// <returns></returns>
      private SM_Class DataModel(DataRow row) {
          SM_Class model = new SM_Class();
          if (row != null)
          {
              if (row["SM_id"] != null && row["SM_id"].ToString() != "")
              {
                  model.SM_id = int.Parse(row["SM_id"].ToString());
              }
              if (row["SM_name"] != null)
              {
                  model.SM_name = row["SM_name"].ToString();
              }
              if (row["SM_Grade"] != null)
              {
                  model.SM_Grade = row["SM_Grade"].ToString();
              }
              if (row["SM_Class"] != null)
              {
                  model.SM_Classes = row["SM_Class"].ToString();
              }
              if (row["SM_Gender"] != null)
              {
                  model.SM_Gender = row["SM_Gender"].ToString();
              }
              if (row["SM_Age"] != null && row["SM_Age"].ToString() != "")
              {
                  model.SM_Age = int.Parse(row["SM_Age"].ToString());
              }
              if (row["SM_OutTime"] != null && row["SM_OutTime"].ToString() != "")
              {
                  model.SM_OutTime = DateTime.Parse(row["SM_OutTime"].ToString());
              }
              if (row["SM_Istf"] != null && row["SM_Istf"].ToString() != "")
              {
                  if ((row["SM_Istf"].ToString() == "1") || (row["SM_Istf"].ToString().ToLower() == "true"))
                  {
                      model.SM_Istf = true;
                  }
                  else
                  {
                      model.SM_Istf = false;
                  }
              }
          }
          return model;
      }
      /// <summary>
      /// 更新操作
      /// </summary>
      /// <param name="model"></param>
      /// <returns></returns>
      public int Update(SM_Class model) {
          StringBuilder strSql = new StringBuilder();
          strSql.Append("update SM_Class set ");
          strSql.Append("[email protected]_name,");
          strSql.Append("[email protected]_Grade,");
          strSql.Append("[email protected]_Class,");
          strSql.Append("[email protected]_Gender,");
          strSql.Append("[email protected]_Age,");
          strSql.Append("[email protected]_OutTime,");
          strSql.Append("[email protected]_Istf");
          strSql.Append(" where [email protected]_id");
          SqlParameter[] parameters = {
                    new SqlParameter("@SM_name", SqlDbType.VarChar,20),
                    new SqlParameter("@SM_Grade", SqlDbType.VarChar,20),
                    new SqlParameter("@SM_Class", SqlDbType.VarChar,20),
                    new SqlParameter("@SM_Gender", SqlDbType.VarChar,4),
                    new SqlParameter("@SM_Age", SqlDbType.Int,4),
                    new SqlParameter("@SM_OutTime", SqlDbType.DateTime),
                    new SqlParameter("@SM_Istf", SqlDbType.Bit,1),
                    new SqlParameter("@SM_id", SqlDbType.Int,4)};
          parameters[0].Value = model.SM_name;
          parameters[1].Value = model.SM_Grade;
          parameters[2].Value = model.SM_Classes;
          parameters[3].Value = model.SM_Gender;
          parameters[4].Value = model.SM_Age;
          parameters[5].Value = model.SM_OutTime;
          parameters[6].Value = model.SM_Istf;
          parameters[7].Value = model.SM_id;
          int rows = HelperSQL.ExecuteCommand(strSql.ToString(), parameters);
          return rows;
      }
    }
}

ajax.bll层代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ajax.BLL
{
    using Ajax.DAL;
    using Ajax.Model;
  public  class AjaxSM_Class
  {
      Ajax.DAL.AjaxSM_Class asmc = new DAL.AjaxSM_Class();
      /// <summary>
      /// 新增
      /// </summary>
      /// <param name="model"></param>
      /// <returns></returns>
      public int Add(SM_Class model)
      {
          return asmc.Add(model);
      }
      /// <summary>
      /// 删除
      /// </summary>
      /// <param name="SM_id"></param>
      /// <returns></returns>
      public int Delete(int SM_id)
      {
          return asmc.Delete(SM_id);
      }

      /// <summary>
      /// 获得所有数据
      /// </summary>
      /// <param name="strWhere"></param>
      /// <returns></returns>
      public List<SM_Class> GetList()
      {
          return asmc.GetList();
      }
      /// <summary>
      /// 更具id找一条数据
      /// </summary>
      /// <param name="SM_id"></param>
      /// <returns></returns>
      public List<SM_Class> GetList(int SM_id)
      {
          return asmc.GetList(SM_id);
      }

      /// <summary>
      /// 更新操作
      /// </summary>
      /// <param name="model"></param>
      /// <returns></returns>
      public int Update(SM_Class model)
      {
          return asmc.Update(model);
      }

    }
}

ajax.ui层代码:

先说js脚本把,这里是自己封装的一个ajax.js脚本  就是调用自己手写的这个ajaxhelper.js来实现异步刷新请求。

var ajaxHelper = {
    markXHR: function () {
        var xhr;
        if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest();
        } else { xhr = new ActiveXObject("Micrsoft.XMLHTTP"); }
        return xhr;
    },
    //get请求
    ajaxGet: function (url, sucessFun) {
        this.ajaxOpt("get", url,null, sucessFun);
    },
    //post请求
    ajaxPost: function (url, data, sucessFun) {
        this.ajaxOpt("post", url, data, sucessFun);
    },
    //定义ajax的get和post请求
    //httpmenthod :get,post
    //data:发送给服务器的数据,post有值,get为null
    //sucessFun成功的回掉函数
    ajaxOpt: function (httpMenthod, url, data, sucessFun) {
        //转换成小写字符串
        var menthod = httpMenthod.toLowerCase();
        //定义xmlhttprequest对象
        var ajaxobj = this.markXHR();
        //异步对象设置参数,总是异步true
        ajaxobj.open(httpMenthod, url, true);
        //判断是get还上post,设置响应报文
        if (menthod == "get") {
            //为了使get请求不取自浏览器缓存,而每次都请求服务器

            ajaxobj.setRequestHeader("If-Modified-Since", "0");
        } else {
            //告诉服务器请求的数据类型
            ajaxobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        }
        //给一度对象设置回掉函数

        ajaxobj.onreadystatechange = function () {
            if (ajaxobj.readyState==4&&ajaxobj.status==200) {
                var jsonobj = JSON.parse(ajaxobj.responseText);
                if (jsonobj.Status == "sucess") {
                    sucessFun(jsonobj);
                }
                else {
                    alert(jsonobj.Msg);
                }

            }
        }
        ajaxobj.send(data);
    }

}

再者我有引用jquery-1.9.1.js 文件 还有一个msgBox.js作为弹出窗体,jquery我想大家应该都有,我就上传下msgBox的js文件的代码吧。

/*{
    imghref:图片文件夹所在路径,
    waitImg:等待图片名,
    bgImg:背景图片名
   }
*/
function MsgBox(s) {
    var secondConst = 2000;//系统默认显示时间
    var secondWait = 2000;//显示时间
    var timer;//计时器
    var lf, tp;//左边距,顶边距
    var paras = {}; //json参数
    function readyMsgBox() {
        if (s != null){
            if (s.imghref != null) paras.imghref = s.imghref; else paras.imghref = "images/";
            if (s.waitImg != null) paras.waitImg = s.waitImg; else paras.waitImg = "loader.gif";
            if (s.bgImg != null) paras.bgImg = s.bgImg; else paras.bgImg = "qzonebg.gif";
        }
        else paras = { imghref: "./images/", waitImg: "loader.gif", bgImg: "qzonebg.gif" };
        paras.waitImgTag = "<img src=‘" + paras.imghref + paras.waitImg + "‘ style=‘margin-right:10px;‘ align=‘middle‘/>    ";
        preloadImg(new Array(paras.imghref + paras.bgImg, paras.imghref + paras.waitImg));
        writeMsgBox();
        window.onresize = function(){setPosition();}
    }
    this.showMsgWait = function (msg) {
        this.showMsgAllT(paras.waitImgTag + msg, 0);
    }
    this.showMsgAllT = function (msg, type) {
        clearTimer();
        changeIco(type);
        gelContainer().innerHTML = msg;
        showBox();
    }
    this.hidBox = function () { hideBox(); };
    this.showMsgText = function (msg) {
        this.showMsgAllT(msg, 0);
    }
    this.showMsgInfo = function (msg) {
        if (arguments.length > 1) paras.callBack = arguments[1];
        showSysMsg(msg, 1);
    }
    this.showMsgInfoSide = function (eleId, msg, doHid) {//doHid 是否消失
        if (arguments.length > 3) paras.callBack = arguments[1];
        showSysMsgSideEle(eleId, msg, 1, doHid);
    }
    function analysisPara(args) {
        if (args.length > 1) paras.callBack = args[1];
    }
    this.showMsgOk = function (msg) {
        if (arguments.length > 1) paras.callBack = arguments[1];
        showSysMsg(msg, 2);
    }
    this.showMsgOkSide = function (eleId, msg, doHid) {
        if (arguments.length > 3) paras.callBack = arguments[1];
        showSysMsgSideEle(eleId, msg, 2, doHid);
    }
    this.showMsgErr = function (msg) {
        if (arguments.length > 1) paras.callBack = arguments[1];
        showSysMsg(msg, 3);
    }
    this.showMsgErrSide = function (eleId,msg,doHid) {
        if (arguments.length > 3) paras.callBack = arguments[1];
        showSysMsgSideEle(eleId, msg, 3, doHid);
    }
    this.showSysMsgWTime = function (msg, type, second) {
        if (arguments.length > 3) paras.callBack = arguments[3];
        changeIco(type);
        gelContainer().innerHTML = msg;
        showBox();
        secondWait = second;
        if (second >= 0)
            startTimer(emptyMsg);
    }
    function showSysMsg(msg, type) {
        changeIco(type);
        gelContainer().innerHTML = msg;
        showBox();
        secondWait = secondConst;
        startTimer(emptyMsg);
    }
    //---显示在元素右边
    function showSysMsgSideEle(eleId, msg, type, doHid) {
        changeIco(type);
        gelContainer().innerHTML = msg;
        setPosSideEle(eleId);
        if (doHid) {
            secondWait = secondConst;
            startTimer(emptyMsg);
        } else clearTimer();
    }
    function setPosSideEle(eleId) {
        var wid = document.getElementById(eleId).offsetWidth;
        var hig = document.getElementById(eleId).offsetHeight;
        var pos = getPos(eleId);
        gelBox().style.left = (wid+2 + pos.left) + "px";
        gelBox().style.top = (pos.top - (hig/2)) + "px";
        gelBox().style.display = "block";
    }
    //--------------
    this.showReqErr=function(){this.showMsgErr("请求错误 ToT!");}
    this.showReqOk=function(){this.showMsgOk("操作成功 ^o^!");}
    this.showReqVF = function () { this.showSysMsgWTime("会话过期,3秒后自动返回登录界面 -o-!",1,3000); }
    this.showWait = function () { this.showMsgWait("请稍后 l _ l ..."); }
    //-------------
    function startTimer(functionName) {
        clearTimer();
        timer=window.setTimeout(functionName, secondWait);
    }
    function clearTimer() {
        if (timer != null && timer != undefined) { clearTimeout(timer); }
    }
    function emptyMsg() {
        gelContainer().innerHTML = "";
        hideBox();
        if (paras.callBack != null) {paras.callBack(); paras.callBack = null; }
    }
    function writeMsgBox() {
        var msgBox = document.createElement("table");
        var msgTbody = document.createElement("tbody");
        var msgTr = document.createElement("tr");
        var msgBoxL = document.createElement("td");
        var msgBoxC = document.createElement("td");
        var msgBoxR = document.createElement("td");
        document.body.appendChild(msgBox);
        msgBox.appendChild(msgTbody);
        msgTbody.appendChild(msgTr);
        msgTr.appendChild(msgBoxL);
        msgTr.appendChild(msgBoxC);
        msgTr.appendChild(msgBoxR);
        msgBox.setAttribute("id", "msgBox");
        msgBox.setAttribute("cellpadding", "0");
        msgBox.setAttribute("cellspacing", "0");
        msgBox.style.cssText = "height:52px;width:auto;position:absolute;z-index:999999;display:none; background:url(" + paras.imghref + paras.bgImg+") 0px -161px;";
        msgBoxL.setAttribute("id", "msgBoxL");
        msgBoxL.style.cssText = "width:50px;background:url(" + paras.imghref + paras.bgImg+") -7px -108px no-repeat;";
        msgBoxC.setAttribute("id", "msgBoxC");
        msgBoxC.style.cssText = "width:auto;line-height:51px;color:#666666;font-weight:bold;font-size:14px;padding-right:10px;";
        msgBoxR.setAttribute("id", "msgBoxR");
        msgBoxR.style.cssText = "width:5px;background:url(" + paras.imghref + paras.bgImg+") 0px 0px no-repeat;";
    }
    function changeIco(ty) {
        if (ty == 0)//none
            document.getElementById("msgBoxL").style.width = "10px";
        else document.getElementById("msgBoxL").style.width = "50px";
        if (ty == 1)//info
            document.getElementById("msgBoxL").style.backgroundPosition = "-7px -54px";
        else if (ty == 2)//ok
            document.getElementById("msgBoxL").style.backgroundPosition = "-7px 0px";
        else if (ty == 3)//err
            document.getElementById("msgBoxL").style.backgroundPosition = "-7px -108px";
    }
    function gelBox() {
        return document.getElementById("msgBox");
    }
    function gelContainer() {
        return document.getElementById("msgBoxC");
    }
    function hideBox() {
        gelBox().style.display = "none";
    }
    function showBox() {
        setPosition();
        gelBox().style.display = "block";
    }
    function setPosition() {
        lf = document.body.clientWidth / 2 - (gelBox().innerHTML.replace(/<[^>].*?>/g, "").length) * 10;
        tp = window.screen.height / 2 - 200 + document.documentElement.scrollTop;
        gelBox().style.left = lf + "px";
        gelBox().style.top = tp + "px";
    }
    function preloadImg() {
        var Arrimg = new Array();
        if (typeof (arguments[0]) == "string") Arrimg[0] = arguments[0];
        if (typeof (arguments[0]) == "object") {
            for (var i = 0; i < arguments[0].length; i++) {
                Arrimg[i] = arguments[0][i];
            }
        }
        var img = new Array()
        for (var i = 0; i < Arrimg.length; i++) {
            img[i] = new Image();
            img[i].src = Arrimg[i];
        }
    }
    function getPos(eid) {var target = document.getElementById(eid);var left = 0, top = 0;
        do {left += target.offsetLeft || 0;top += target.offsetTop || 0;target = target.offsetParent;} while (target);
        return {left: left,top: top}
    }
    readyMsgBox();
}

还有两个图片就是这两个文件,放在一个文件下面 ,用到msgbox的时候把路径添加进去就ok了。

因为我的数据传输都是json格式所以在ui层我直接添加了一个ajaxobj.cs实体类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Ajax.UI
{
    public class Ajaxobj
    {
        private string status;

        /// <summary>
        /// 状态
        /// </summary>
        public string Status
        {
            get { return status; }
            set { status = value; }
        }

        private string msg;
        /// <summary>
        /// 提示
        /// </summary>
        public string Msg
        {
            get { return msg; }
            set { msg = value; }
        }
        private object data;
        /// <summary>
        /// 数据
        /// </summary>
        public object Data
        {
            get { return data; }
            set { data = value; }
        }
        private string url;
        /// <summary>
        /// 地址
        /// </summary>
        public string Url
        {
            get { return url; }
            set { url = value; }
        }
    }
    public enum Estatus {
        sucess=200,
        error=500
    }
}

中间有个枚举,是用来判断正确还是错误的..

因为我是用的简单三层就没有下common层,所以在ui层我田间了一个转换序列化json格式的kiss.cs类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Ajax.UI
{
    public static class kiss
    {
        /// <summary>
        /// json序列化
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static string GetJson(object model) {
            System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
            return js.Serialize(model);
        }
    }
}

大体的框架就这些,这些东西我没有怎么去做优化,主要是实现功能

所以想现在上getlist.aspx动态页面的代码,都是用jquery异步请求一般处理程序,有些的不好的地方,希望大家能指出来,我好进行改进,还有一个我没有写样式,就连简单的边框也没有增加。哎,说多了,真的是泪,本来想前两天就把这个东西总结出来的,可是元旦事多,没有办法,只要今天来把它写完,上传,然后出去看人,希望不要有踩踏事件,昨天出去了下,从地铁出来走了半个小时,坐朋友车去了一趟小蛮腰,啥也没有干,感受了下,堵车的滋味,哎...说多了都是泪.另一个朋友说开个车去爬山,堵在半路上,上也不是下也不是,可恶的单行道...呵呵,在这里希望大家开开心心过个节,2014年对我来说真的太悲催了,主要是太菜了...都是泪呀.又闲扯了这么多鬼话.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="getlist.aspx.cs" Inherits="Ajax.UI.getlist" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <script src="js/jquery-1.9.1.js"></script>
    <script src="js/msgBox.js"></script>
    <script src="js/AjaxHelper.js"></script>
    <title></title>
    <style>
        /*设置编辑的样式和绝对定位 和透明度*/
        #edit {
        display:none;
        position:absolute;
        background-color: #878585;
        height:100%;
        width:100%;
        opacity:0.6;
        }
    </style>
    <script>
        var msg;

        $(function () {
            // //实例化js弹出对话框,里面存放图片的位置
            msg = new MsgBox({ imghref: "/js/imgs/" });
            //执行ajaxhelper.js文件发出异步请求
            ajaxHelper.ajaxGet("getdata.ashx?type=getdata", function (jsonobj) {
                //判断jsonobj状态
                if (jsonobj.Status == "error") {
                    //弹出msgbox的对话框
                   msg.showMsgErr(jsonobj.Msg);
                } else {
                    //hide();
                    //弹出msgbox的对话框
                    MarkOpt(jsonobj.Data);
                }
            })
            $("#btedit").click(function () {
                //获取表单类的文本值
                var parms = $("#f1").serialize();
                //判断cid是否为空,为空做新增操作,不为空做编辑操作
                if ($("#cid").val() == "") {
                    //异步post请求新增
                    ajaxHelper.ajaxPost("getdata.ashx?type=add", parms, function (jsonobj) {
                        if (jsonobj.Status == "error") {
                            msg.showMsgErr(jsonobj.Msg)
                        } else {
                            msg.showMsgOk(jsonobj.Msg, function () {
                                window.location = window.location;
                            })
                        }
                    })
                } else {
                    //异步post请求编辑操作
                    ajaxHelper.ajaxPost("getdata.ashx?type=btedit", parms, function (jsonobj) {
                        if (jsonobj.Status == "error") {
                            msg.showMsgErr(jsonobj.Msg);
                        } else {
                            msg.showMsgOk(jsonobj.Msg, function () {
                                //刷新当前列表页面  window.location.reload();
                                window.location = window.location;

                            })
                        }
                    })
                }
            })
            //打开新增面板
            $("#add").click(function () {
                //加载新增框
                $("#edit").show().css("top", 200).css("left", 0);
                //文本框里面的内容清空
                $("#cid").val("");
                $("#idnane").val("");
                $("#grade").val("");
                $("#class").val("");
                $("#sex").val("");
                $("#age").val("");
                $("#time").val("");
            })
        })

        //获取jsonajax的json.data数据转换成td
        function MarkOpt(data) {
            //获取table 设置的id =tb 的dom元素
            var table = document.getElementById("tb");
            //遍历data数据 生成行和列  填充数据
            for (var i = 0; i < data.length; i++) {
                //创建tr
                var row = table.insertRow(-1);
                //创建tr行中单元格td
                row.insertCell(-1).innerHTML = data[i].SM_id;
                row.insertCell(-1).innerHTML = data[i].SM_name;
                row.insertCell(-1).innerHTML = data[i].SM_Grade;
                row.insertCell(-1).innerHTML = data[i].SM_Classes;
                row.insertCell(-1).innerHTML = data[i].SM_Gender;
                row.insertCell(-1).innerHTML = data[i].SM_Age;
                row.insertCell(-1).innerHTML = fmtdt(data[i].SM_OutTime);
                row.insertCell(-1).innerHTML = "<a href=‘javascript:void(0)‘ onclick=‘Del("+data[i].SM_id+",this)‘ >删除</a>|<a href=‘javascript:void(0)‘ onclick=‘Edit("+data[i].SM_id+")‘ >编辑</a>";
            }
        }
        function Del(id, t) {
            //弹出对话框问是否删除
            if (confirm("确定要删除?") == false) {
                return;
            }
            //调用ajaxhelper的js脚本 发送异步请求 交给一般处理程序处理
            ajaxHelper.ajaxGet("getdata.ashx?type=del&id=" + id, function (jsonajax) {
                //判断jsonajax状态的值
                if (jsonajax.Status == "error") {
                    //利用msgbox对话框弹出窗口
                    msg.showMsgErr(jsonajax.Msg);

                }
                else {
                    //利用msgbox对话框弹出窗口
                    msg.showMsgOk(jsonajax.Msg, function () {
                        //删除td $(t)=this 表示当前行
                        $(t).parent().parent().remove();
                    })

                }
            })
        }
        //编辑的方法给文本框赋值
        function Edit(id) {
            //打开隐藏面板
            $("#edit").show().css("top", 200).css("left", 0);
            //异步请求
            ajaxHelper.ajaxGet("getdata.ashx?type=getedit&id=" + id, function (jsonobj) {
                //判断请求是否正确
                if (jsonobj.Status == "error") {
                    //弹出错误提示
                    msg.showMsgErr(jsonobj.Msg);
                }
                else {
                    //给文本框赋值
                    $("#cid").val(jsonobj.Data[0].SM_id);
                    $("#idnane").val(jsonobj.Data[0].SM_name);
                    $("#grade").val(jsonobj.Data[0].SM_Grade);
                    $("#class").val(jsonobj.Data[0].SM_Classes);
                    $("#sex").val(jsonobj.Data[0].SM_Gender);
                    $("#age").val(jsonobj.Data[0].SM_Age);
                    $("#time").val(fmtdt(jsonobj.Data[0].SM_OutTime));

                }
            })
        }

    </script>
    <script type="text/javascript">
        //负责格式化json返回的特殊日期格式为 yyyy-mm-dd hh:mm:ss
        function fmtdt(cellval) {
            var date = new Date(parseInt(cellval.replace("/Date(", "").replace(")/", ""), 10));
            var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
            var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
            return date.getFullYear() + "-" + month + "-" + currentDate + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();
        }
        //关闭新增或者编辑面板
        function noshow() {
            $("#edit").hide();
        }

    </script>

</head>
<body>
    <form id="form1" runat="server" >
    <table id="tb">
        <tr>
            <th>id</th>
            <th>姓名</th>
            <th>班级</th>
            <th>年级</th>
            <th>性别</th>
            <th>年龄</th>
            <th>时间</th>
            <th>操作</th>
        </tr>
    </table>
        <input type="button" value="新增" id="add"  />
    </form>
    <div id="edit">
        <form id="f1">
            <input type ="hidden" id="cid"  name="cid" value ="1" />
            <table id="tb1" class="tb2">

                 <tr>
                    <th>姓名</th>
                    <td><input type="text" id="idnane" name="name" value="2" /></td>
                </tr>
                 <tr>
                    <th>班级</th>
                    <td><input type="text" id="grade" name="grade" value="3" /></td>
                </tr>
                 <tr>
                    <th>年级</th>
                    <td><input type="text" id="class" name="class" value="4" /></td>
                </tr>
                  <tr>
                    <th>性别</th>
                    <td><input type="text" id="sex" name="sex" value="5" /></td>
                </tr>
                    <tr>
                    <th>年龄</th>
                    <td><input type="text" id="age" name="age" value="6" /></td>
                </tr
                 <tr>
                    <th>时间</th>
                    <td><input type="text" id="time" name="time" value="7" /></td>
                </tr>
                <tr>
                    <td>
                        <input type="button" value="提交" id="btedit" />
                        <input type="button" value="关闭" onclick="noshow();" />
                    </td>
                </tr>
            </table>

        </form>
    </div>
</body>
</html>

这个里面大多数我都做了注视,希望大家看的明白,还有我的新增和编辑是一个面板所以会有一个判断

里面有个好用的jquery时间转换.可以作为资源库去使用.希望大家能直接调用就好了.

一般处理程序的代码 getdata.ashx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Ajax.UI
{
    using Ajax.Model;
    using Ajax.BLL;
    /// <summary>
    /// getdata 的摘要说明
    /// </summary>
    public class getdata : IHttpHandler
    {
        Ajax.BLL.AjaxSM_Class asc = new AjaxSM_Class();
        Ajax.Model.SM_Class sc = new SM_Class();
        Ajaxobj obj = new Ajaxobj();
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string strtype = context.Request.QueryString["type"];
            switch (strtype)
            {
                case "getdata":
                    getlist();
                    break;
                case "del":
                    Del();
                    break;
                case "getedit":
                    getedit();
                    break;
                case"btedit":
                    btedit();
                    break;
                case"add":
                    add();
                    break;
                default:
                    break;
            }

        }
        /// <summary>
        /// 新增
        /// </summary>
        private void add()
        {
            try
            {
                string id = HttpContext.Current.Request.Form["cid"];
                postMethod(id);
                int i = asc.Add(sc);
                if (i > 0)
                {
                    obj.Msg = "新增成功";
                    obj.Status = Estatus.sucess.ToString();
                    HttpContext.Current.Response.Write(kiss.GetJson(obj));
                }
            }
            catch (Exception ex)
            {

                WriteError(ex);
            }

        }
        /// <summary>
        /// 编辑数据
        /// </summary>
        private void btedit()
        {
            try
            {
                string id = HttpContext.Current.Request.Form["cid"];
                postMethod(id);

              int i=asc.Update(sc);
              if (i>0)
              {
                  obj.Msg = "修改成功成功";
                  obj.Status = Estatus.sucess.ToString();
                  HttpContext.Current.Response.Write(kiss.GetJson(obj));
              }

            }
            catch (Exception ex)
            {

                WriteError(ex);
            }

        }

        //获取post传递过来的数据
        private void postMethod(string id)
        {
            if (!string.IsNullOrEmpty(id))
            {
                sc.SM_id = int.Parse(id);
            }
            //string id = HttpContext.Current.Request.Form["cid"];
            string name = HttpContext.Current.Request.Form["name"];
            string classes = HttpContext.Current.Request.Form["class"];
            string sex = HttpContext.Current.Request.Form["sex"];
            string age = HttpContext.Current.Request.Form["age"];
            string time = HttpContext.Current.Request.Form["time"];
            string grade = HttpContext.Current.Request.Form["grade"];

            sc.SM_name = name;
            sc.SM_Grade = grade;
            sc.SM_Classes = classes;
            sc.SM_Gender = sex;
            sc.SM_Age = int.Parse(age);
            sc.SM_OutTime = DateTime.Parse(time);
            sc.SM_Istf = false;
        }
        /// <summary>
        /// 获取一条数据
        /// </summary>
        private void getedit()
        {
            try
            {
                string id = HttpContext.Current.Request.QueryString["id"];
                List<SM_Class> list = asc.GetList(int.Parse(id));
                if (list.Count>0)
                {
                    obj.Data = list;
                    obj.Status = Estatus.sucess.ToString();
                    obj.Msg = "获取数据成功";

                    HttpContext.Current.Response.Write(kiss.GetJson(obj));
                }
            }
            catch (Exception ex)
            {

                WriteError(ex);
            }

        }
        /// <summary>
        /// 删除
        /// </summary>
        private void Del()
        {
            try
            {
               string strid= HttpContext.Current.Request.QueryString["id"];
                int id=asc.Delete(int.Parse(strid));
                if (id>0)
                {
                    obj.Status = Estatus.sucess.ToString();
                    obj.Msg = "数据删除成功";
                    HttpContext.Current.Response.Write(kiss.GetJson(obj));
                }
            }
            catch (Exception ex)
            {
              WriteError(ex);
            }
        }
        /// <summary>
        /// 获取数据
        /// </summary>
        private void getlist()
        {
            try
            {
                List<SM_Class> List = asc.GetList();
                if (List.Count > 0)
                {
                    //表示成功
                    obj.Status = Estatus.sucess.ToString();
                    obj.Msg = "获取数据成功";
                    obj.Data = List;
                    HttpContext.Current.Response.Write(kiss.GetJson(obj));
                }
            }
            catch (Exception ex)
            {
                WriteError(ex);
            }

        }

        private void WriteError(Exception ex)
        {
            obj.Status = Estatus.error.ToString();
            obj.Msg = ex.Message;
            HttpContext.Current.Response.Write(kiss.GetJson(obj));
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

时间: 2024-10-07 07:37:05

一套手写ajax加一般处理程序的增删查改的相关文章

一般处理程序加简单三层实现增删查改(1)

一般处理程序通常实现IHttpHandler接口,ashx效率比较高效,webform(aspx)比较消耗资源,mvc效率刚好介于两者之间 一般处理程序处理过程(HttpHandler) IIS处理不了这种后缀程序通过映射表将该程序传递给ASPNET_ISAPI.DLL的程序,然后又将请求转给了网站程序网站程序调用HttpRuntime类的静态方法处理请求,有以下步骤:1,实现System.Web.IHttpHandle特殊接口的类实现了该接口的类都能作为一个外部请求的目标程序2,创建 Http

.net学习之Session、Cookie、手写Ajax代码以及请求流程

1.IIS 7 以上版本集成了两种模式,一种是经典模式,一种是集成模式(直接将asp.net框架集成到IIS中) 2.浏览器和服务器端通过什么技术来实现的?Socket(套接字),通信的语法是HTTP协议,也就是请求报文和响应报文 3.浏览器请求asp.net页面实际是请求的asp.net页面里的ProcessRequest方法 4.请求一般处理程序时,找到ashx页面后台类ashx.cs,创建类对象并调用ProcessRequest方法,生成响应报文体,发回浏览器 5.post表单提交方式:数

ajax加一般处理程序或ASP.NET 后台生成带着二维码的图片

ajax加一般处理程序生成带着二维码的图片 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head

怎么手写Ajax实现异步刷新

所谓的异步刷新,就是不刷新整个网页进行更新数据. 只有通过js才能实现Ajax,进而实行异步刷新 表单提交数据和Ajax提交数据的区别:表单提交是提交的整个页面中的数据,提交数据之后会抛弃之前的页面(刷新页面):ajax是在当前页面提取某些数据并提交出去,并能接收返回来的数据,处理之后进而显示在当前页面(不刷新页面). [例子]==验证用户名是否重复== 使用Ajax的思路:在要刷新的页面中写js和Ajax代码,把数据提交给另一个页面,在Page_Load中写查询代码并把结果返回到刷新的页面.

手写AJAX事例

Ajax在本质上是一个浏览器端的技术 Ajax技术之主要目的在于局部交换客户端及服务器间之数据,主要使用XMLHttpRequest来与服务器交互 创建XMLHttpRequest对象 在IE.Firefox.safari和Opera中创建该对象的JavaScript代码为: var xhr = new XMLHttpRequest(); 在IE5/6中代码为: var xmlRequest = new ActiveXObject(“Microsoft.XMLHTTP”); 设置异步对象参数并发

css手写动态加载中...

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

向列布局手写代码加F7

function initBuildingEntryF7(sellId){ var comId = "buildingEntry"; var filter = ""; if(sellId!=null){ filter = "sellproject.id = '"+sellId+"'"; } var options = { id: "buildingEntry", name: "buildingEn

Vue.js&mdash;&mdash;基于$.ajax实现数据的跨域增删查改

概述 之前我们学习了Vue.js的一些基础知识,以及如何开发一个组件,然而那些示例的数据都是local的.在实际的应用中,几乎90%的数据是来源于服务端的,前端和服务端之间的数据交互一般是通过ajax请求来完成的. 说起ajax请求,大家第一时间会想到jQuery.除了拥有强大的DOM处理能力,jQuery提供了较丰富的ajax处理方法,它不仅支持基于XMLHttpRequest的ajax请求,也能处理跨域的JSONP请求. 之前有读者问我,Vue.js能结合其他库一起用吗?答案当然是肯定的,V

AJAX增删查改------前台事件

//创建js序列化对象 System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer(); //将数据序列化成JSON字符串.匿名类. string str = js.Serialize(new { UList = list, MyPageBar = pageBar }); getMonth() 方法从0月份开始--11月份结束