ASP.NET中使用JSON方便实现前台与后台的数据交换
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方便实现前台与后台的数据交换的更多相关文章
- asp.net中利用JSON进行增删改查中运用到的方法
//asp.net中 利用JSON进行操作, //增加: //当点击“增加链接的时候”,弹出增加信息窗口,然后,在窗体中输入完整信息,点击提交按钮. //这里我们需要考虑这些:我会进行异步提交,使用j ...
- 在Vue中使用了Swiper ,动态从后台获取数据的之后,swiper滑动失效??
在Vue中使用了Swiper ,动态从后台获取数据的之后,swiper滑动失效?? 是因为swiper提前初始化了,那时候数据还没有完全出来.这里有两种解决办法 1. 使用vue提供的$nextTic ...
- [转载]ASP.NET中TextBox控件设立ReadOnly="true"后台取不到值
原文地址:http://www.cnblogs.com/yxyht/archive/2013/03/02/2939883.html ASP.NET中TextBox控件设置ReadOnly=" ...
- Laravel 5.2 中多用户认证实现(前台和后台登录)
Laravel 5.2中多用户认证支持,即同时允许不同数据表用户(如前台用户.后台用户.app用户等)登录认证.下面我们就来简单介绍多用户登录及注册功能实现. 1.生成认证脚手架 首先我们使用Lara ...
- json:js和jquery中轻量级数据交换格式
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...
- 2016/4/2 json:js和jquery中轻量级数据交换格式 例: 窗口弹出 popwindow
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...
- JSON(JS 对象简谱,一种数据交换格式)
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式 存储和表示数据的文本格式 层次结构清晰.简洁 JSON是一个序列化的对象或数组 1.js ...
- Asp MVC 中处理JSON 日期类型
注:时间有点忙,直接copy 过来的,要查看原址: http://www.developer.com/net/dealing-with-json-dates-in-asp.net-mvc.html I ...
- ASP.NET中TextBox控件设立ReadOnly="true"后台取不到值
SP.NET中TextBox控件设置ReadOnly="true"H或Enabled=false后台取不到值 当TextBox设置了ReadOnly="true" ...
随机推荐
- Oracle无监听程序
小编在使用oracle时经常遇到“ 报错“ORA-12541: TNS: 无监听程序”” 多方搜索,找到一个很好的解决方法,给大家分享一下: 1 从开始菜单中打开“Oracle Net Configu ...
- Python学习笔记第二十一周
目录: 1.URL 2.Models - 操作 3.Templates - html模板的使用 - 自定义函数 4.cookie和session 5.分页(自定义分页) 6.Form验证 内容: 1. ...
- c++、Java、python对应的编译型语言和解释性语言区别详解
1.首先明确一点: 高级语言是不能直接在CPU上运行的.CPU只能处理机器语言,就是黑客帝国里面那个10101010101110的数字流. 那么为了让机器语言能够在CPU上运行,那么就必须将其变成机器 ...
- Python urllib.quote
转: 编码:urllib.quote(string[, safe]),除了三个符号“_.-”外,将所有符号编码,后面的参数safe是不编码的字符, 使用的时候如果不设置的话,会将斜杠,冒号,等号,问号 ...
- 本地ip变化,自定义IP地址
1.打开网络和internet 设置 2.右键属性 3.修改
- 异步测试celery
django异步请求: Django从一个http请求发起,到获得响应返回html页面的流程大致如下:http请求发起 -- http handling(request解析) -- url mappi ...
- Justified Jungle
Problem J: Justified Jungle Time limit: 6 s Memory l imit: 512 MiB As you probably know, a tree is a ...
- lnmp架构、mysql的安装、php的安装、nginx相关
1.lnmp架构 2.mysql的安装: mysql5.6自动安装脚本: yum install perl-Data-Dumper.x86_64 libaio.x86_64 libaio-devel. ...
- .net core consul grpc--系统服务RPC实现通信(一)
.net core grpc 系统服务实现通信(一) 现在系统都服务化,.net core 实现服务化的方式有很多,我们通过grpc实现客户端.服务端通信. grpc(https://grpc.io/ ...
- .net core 微服务架构-docker的部署-包括网关服务(Ocelot)+认证服务(IdentityServer4)+应用服务(asp.net core web api)
本文主要介绍通过Docker来部署通过.Net Core开发的微服务架构,部署的微服务主要包括统一网关(使用Ocelot开发).统一认证(IdentityServer4).应用服务(asp.net c ...