ASP.NET中使用JSON方便实现前台与后台的数据交换

46 篇文章 0 订阅
45 篇文章 0 订阅

一、前台向后台请求数据

在页面加载时,有时需要对一些表单进行初始化,此时可以利用JQuery的 get 函数向后台发起异步请求:

//初始化函数
function initSettings() {
    $.get("?Action=init", function (data) {
      if (data == "NO") {
        alert("初始化失败!");
      }
      else if (data != null && data != undefined) {
        var json = JSON.parse(data);
        setFieldsData(json);
      }
    });
  }
  //填充表单数据
  function setFieldsData(json) {
    $("#userSettings input:text").each(function () {
      $(this).val(json[$(this).attr("name")]);
    });
  }

其中,各表单中含有一个name属性,其值为数据库对应的字段名。 后台的响应如下:

if (Action == "init")
      {
        string json = "{";
        DataSet ds = new DataSet(); // 此处以加载用户信息为例
        ds = DataOperation.DB.Select("select * from USER_USER where USER_ID=" + USER_ID, DataOperation.DB.GetConnType());
        ds.Dispose();
        if (ds.Tables[0].Rows.Count > 0)
        {
          for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
          {
            json +="\"" + ds.Tables[0].Columns[i].ColumnName+"\":\""+ds.Tables[0].Rows[0][i]+"\",";
          }
          json = json.Substring(0, json.Length - 1);
          json += "}";
          try
          {   
            Response.Write(json);
            Response.End();
          }
          catch (Exception)
          {
          }
        }
        else
        {
          Response.Write("NO");
          Response.End();
        }
      }

二、前台向后台提交数据

在表单填好后,保存时需要向后台提交数据,利用JSON 可以很方便的获取各表单数据提交并写入到数据库。前台JS 代码如下:

<pre name="code" class="javascript">$("#saveSettings").click(function () {
      var json = "{";
      $("#userSettings input:text").each(function () {
        json +="\""+$(this).attr("name")+"\":\""+$(this).val()+"\",";  // 获取表单值生成 JSON 格式数据
      });
      json = json.substring(0, json.length - 1);
      json += "}";
      $.post("?Action=save&json=" + json, function (data) {
        if (data == "NO") {
           alert("保存失败!");			
        }
        if (data == "OK") {
          alert("保存成功!");
        }
      });
    });

后台响应代码如下:

if (Action=="save")
      {
        string sqlstr ="update USER_USER set "; 
        string json =Request["json"];

        JavaScriptSerializer serializer = new JavaScriptSerializer();
        Dictionary<string, object> data = (Dictionary<string, object>)serializer.DeserializeObject(json);

        foreach (var item in data)
        {
          sqlstr += item.Key + " = '" + item.Value + "',";
        }
        sqlstr = sqlstr.Substring(0, sqlstr.Length - 1);
        sqlstr += "where USER_ID=" + USER_ID;
         
        DataSet ds = new DataSet();
        ds = DataOperation.DB.Select("select USER_ID from USER_USER where USER_ID=" + USER_ID , DataOperation.DB.GetConnType());
        ds.Dispose();
        if (ds.Tables[0].Rows.Count>0)
        {
          try
          {
            DataOperation.DB.Execnonsql(sqlstr, DataOperation.DB.GetConnType());
            Response.Write("OK");
            Response.End();
          }
          catch (Exception)
          {
 
          }
        }
        else
        {
          Response.Write("NO");
          Response.End();
        }
      }

上面的代码中,使用了 JavaScriptSerializer 类和 Dictionary 类来解析 JSON 数据,将 JSON 数据解析成字典,方便SQL语句的生成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值