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

发表于2014/9/13 6:47:08  8652人阅读

分类: ASP.NET Jquery extjs

一、前台向后台请求数据

在页面加载时,有时需要对一些表单进行初始化,此时可以利用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("保存成功!");

}

});

});

</pre><br>

<br>

<pre class="brush:java;"></pre>

<p></p>

<p>   后台响应代码如下:</p>

<p></p>

<pre class="brush:java;">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();

}

}</string,></string,></pre><br>

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

<br>

<br>

<p></p>

ASP.NET中使用JSON方便实现前台与后台的数据交换的更多相关文章

  1. asp.net中利用JSON进行增删改查中运用到的方法

    //asp.net中 利用JSON进行操作, //增加: //当点击“增加链接的时候”,弹出增加信息窗口,然后,在窗体中输入完整信息,点击提交按钮. //这里我们需要考虑这些:我会进行异步提交,使用j ...

  2. 在Vue中使用了Swiper ,动态从后台获取数据的之后,swiper滑动失效??

    在Vue中使用了Swiper ,动态从后台获取数据的之后,swiper滑动失效?? 是因为swiper提前初始化了,那时候数据还没有完全出来.这里有两种解决办法 1. 使用vue提供的$nextTic ...

  3. [转载]ASP.NET中TextBox控件设立ReadOnly="true"后台取不到值

    原文地址:http://www.cnblogs.com/yxyht/archive/2013/03/02/2939883.html ASP.NET中TextBox控件设置ReadOnly=" ...

  4. Laravel 5.2 中多用户认证实现(前台和后台登录)

    Laravel 5.2中多用户认证支持,即同时允许不同数据表用户(如前台用户.后台用户.app用户等)登录认证.下面我们就来简单介绍多用户登录及注册功能实现. 1.生成认证脚手架 首先我们使用Lara ...

  5. json:js和jquery中轻量级数据交换格式

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...

  6. 2016/4/2 json:js和jquery中轻量级数据交换格式 例: 窗口弹出 popwindow

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...

  7. JSON(JS 对象简谱,一种数据交换格式)

    JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式 存储和表示数据的文本格式 层次结构清晰.简洁 JSON是一个序列化的对象或数组 1.js ...

  8. Asp MVC 中处理JSON 日期类型

    注:时间有点忙,直接copy 过来的,要查看原址: http://www.developer.com/net/dealing-with-json-dates-in-asp.net-mvc.html I ...

  9. ASP.NET中TextBox控件设立ReadOnly="true"后台取不到值

    SP.NET中TextBox控件设置ReadOnly="true"H或Enabled=false后台取不到值 当TextBox设置了ReadOnly="true" ...

随机推荐

  1. 第七十七课 最小生成树(Kruskal)

    添加kruskal算法: #ifndef GRAPH_H #define GRAPH_H #include "Object.h" #include "SharedPoin ...

  2. e与复利

    e≍2.718 计算一个复利例子,设本金p,年利率为r,每月计算一次利息,月利息为r/12,则一年的本息一共: p(1+r/12)12=pq 当计算复利的时间间隔越来越小,根据上面极限公式,本金所乘的 ...

  3. Vim正则表达式匹配替换字符串

    /********************************************************************** * Vim正则表达式匹配替换字符串 * 说明: * 用V ...

  4. Python之路PythonThread,第四篇,进程4

    python3  进程/线程4 进程间同步互斥方法: from multiprocessing import Lock 创建 进程锁对象 lock = Lock() lock.acquire()  给 ...

  5. SVD分解求解旋转矩阵

    1.设是两组Rd空间的点集,可根据这两个点集计算它们之间的旋转平移信息. 2.设R为不变量,对T求导得: 令 则 将(4)带入(1)得: 令 则 (相当于对原来点集做减中心点预处理,再求旋转量) 3. ...

  6. 学号 20155219 《Java程序设计》第1周学习总结

    学号 20155219 <Java程序设计>第1周学习总结 教材学习内容总结 JVM:是JAVA程序唯一认识的操作系统,其可执行文件为.class文档:具有让Java程序跨平台的功能.负责 ...

  7. P2279 消防局的设立(贪心+dp)

    题目链接:传送门 题目大意: 给定一棵树(N个基地N-1条边): 用半径为2的消防局覆盖这N个基地,问最小的消防局数量. (树上距离为k的最小覆盖问题) 思路: 每次贪心地找到不被覆盖的最深的一个节点 ...

  8. HDU 2561

    F - 第二第二 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Prac ...

  9. windows错误:错误0x80070091 目录不是空的

    错误: Window 下目录无法删除,提示 “ 错误0x80070091 目录不是空的 ” 解决: 1.开始菜单>附件>命令提示符>右键>以管理员身份运行 2.删除文件:(如 ...

  10. UV纹理+修改器:VertexWeightEdit+修改器:Mask遮罩

    UV纹理+修改器: VertexWeightEdit+修改器: Mask遮罩 基本流程, 如下图,准备地图一份, 黑白色即可. 纹理使用颜色绘制权重. 白色为1, 黑色为0. 新增球体, 细分多次, ...