您好,欢迎访问一九零五行业门户网

如何使用json在前后台进行数据传输实例介绍_javascript技巧

上一篇博客写到用javascript生成多组文本,可以让数据的输入不受显示,现在我们需要把这些输入写入数据库,这里就用到json传入。
首先,我们来写一下后台如何生成要传输的数据
[html]
复制代码 代码如下:
function generatedtb() {
//写入
var txtname = document.getelementbyid(txtname).value;
//创建数组
var dtb = new array();
//通过循环把数据写入到数组并返回
for (var i = 0; i var row = new object();
row.name = txtname;
row.fullmoney = firstgroup[i].value;
row.discount = secondgroup[i].value;
dtb.push(row);
}
return dtb;
}
function generatedtb() {
//写入
var txtname = document.getelementbyid(txtname).value;
//创建数组
var dtb = new array();
//通过循环把数据写入到数组并返回
for (var i = 0; i var row = new object();
row.name = txtname;
row.fullmoney = firstgroup[i].value;
row.discount = secondgroup[i].value;
dtb.push(row);
}
return dtb;
}
把数组转换成json串传入到后台:
[html]
复制代码 代码如下:
$(function () {
//点击botton1
$(#lbtnok).click(function () {
var url = discountmanger.aspx?ajax=1;
var dtb = generatedtb();
// var strname = document.getelementbyid(txtname).value;
if (dtb == null)
{ }
else {
//序列化对象
var postdata = json.stringify(dtb);
//异步请求
$.post(url, { json: postdata }, function (json) {
if (json) {
jbox.tip(添加成功!, 提示);
location.reload();
}
else {
jbox.tip(添加失败!, 提示);
location.reload();
}
}, json)
}
});
});
$(function () {
//点击botton1
$(#lbtnok).click(function () {
var url = discountmanger.aspx?ajax=1;
var dtb = generatedtb();
// var strname = document.getelementbyid(txtname).value;
if (dtb == null)
{ }
else {
//序列化对象
var postdata = json.stringify(dtb);
//异步请求
$.post(url, { json: postdata }, function (json) {
if (json) {
jbox.tip(添加成功!, 提示);
location.reload();
}
else {
jbox.tip(添加失败!, 提示);
location.reload();
}
}, json)
}
});
});
在后台的操作:
首先判断是否需要传输数据
[html]
复制代码 代码如下:
if (!ispostback)
{
//判断是否异步请求
if (request.querystring[ajax] == 1)
{
processrequest();
}
if (!ispostback)
{
//判断是否异步请求
if (request.querystring[ajax] == 1)
{
processrequest();
}
在这里进行对数据的处理:
[html]
复制代码 代码如下:
///
/// 处理异步请求
///
private void processrequest()
{
//存入要填写的策略
arraylist arrdiscount = new arraylist();
response.contenttype = text/html;
string json = request.form[json];
//反序列化datatable
if (json == null)
{
return;
}
else
{
datatable newdtb = json2dtb(json);
for (int i = 0; i {
entity.strategydiscount enstrategydiscount = new entity.strategydiscount();
//打折方案名
enstrategydiscount.name = newdtb.rows[i][name].tostring();
//商店id
enstrategydiscount.shopid = long.parse(logininfo.shopid);
enstrategydiscount.fullmoney = convert.todecimal(newdtb.rows[i][fullmoney].tostring());
enstrategydiscount.discount = convert.todecimal(newdtb.rows[i][discount].tostring());
//写入数据到数组
arrdiscount.add(enstrategydiscount);
}
//写入数据到数据库
istrategybll strategy = new strategybll();
if (strategy.addstrategydiscount(arrdiscount))
{
response.write(true);
response.end();
}
else
{
response.write(false);
response.end();
}
}
///
/// 处理异步请求
///
private void processrequest()
{
//存入要填写的策略
arraylist arrdiscount = new arraylist();
response.contenttype = text/html;
string json = request.form[json];
//反序列化datatable
if (json == null)
{
return;
}
else
{
datatable newdtb = json2dtb(json);
for (int i = 0; i {
entity.strategydiscount enstrategydiscount = new entity.strategydiscount();
//打折方案名
enstrategydiscount.name = newdtb.rows[i][name].tostring();
//商店id
enstrategydiscount.shopid = long.parse(logininfo.shopid);
enstrategydiscount.fullmoney = convert.todecimal(newdtb.rows[i][fullmoney].tostring());
enstrategydiscount.discount = convert.todecimal(newdtb.rows[i][discount].tostring());
//写入数据到数组
arrdiscount.add(enstrategydiscount);
}
//写入数据到数据库
istrategybll strategy = new strategybll();
if (strategy.addstrategydiscount(arrdiscount))
{
response.write(true);
response.end();
}
else
{
response.write(false);
response.end();
}
}
这里,我们需要把json转换成datatable
[html]
复制代码 代码如下:
///
/// json转datatable
///
///
///
private datatable json2dtb(string json)
{
javascriptserializer jss = new javascriptserializer();
arraylist dic = jss.deserialize(json);
datatable dtb = new datatable();
if (dic.count > 0)
{
foreach (dictionary drow in dic)
{
if (dtb.columns.count == 0)
{
foreach (string key in drow.keys)
{
dtb.columns.add(key, drow[key].gettype());
}
}
datarow row = dtb.newrow();
foreach (string key in drow.keys)
{
row[key] = drow[key];
}
dtb.rows.add(row);
}
}
return dtb;
}
///
/// json转datatable
///
///
///
private datatable json2dtb(string json)
{
javascriptserializer jss = new javascriptserializer();
arraylist dic = jss.deserialize(json);
datatable dtb = new datatable();
if (dic.count > 0)
{
foreach (dictionary drow in dic)
{
if (dtb.columns.count == 0)
{
foreach (string key in drow.keys)
{
dtb.columns.add(key, drow[key].gettype());
}
}
datarow row = dtb.newrow();
foreach (string key in drow.keys)
{
row[key] = drow[key];
}
dtb.rows.add(row);
}
}
return dtb;
}
这样,就可以把数据无刷新的写入到数据库。
当然,如果我们有一个从数据库读取的datatable,如果通过json显示在前台呢。
首先,我们需要把datatable转换为json数据
[html]
复制代码 代码如下:
///
/// datatable转json
///
///
///
private string dtb2json(datatable dtb)
{
javascriptserializer jss = new javascriptserializer();
arraylist dic = new arraylist();
foreach (datarow row in dtb.rows)
{
dictionary drow = new dictionary();
foreach (datacolumn col in dtb.columns)
{
drow.add(col.columnname, row[col.columnname]);
}
dic.add(drow);
}
return jss.serialize(dic);
}
///
/// datatable转json
///
///
///
private string dtb2json(datatable dtb)
{
javascriptserializer jss = new javascriptserializer();
arraylist dic = new arraylist();
foreach (datarow row in dtb.rows)
{
dictionary drow = new dictionary();
foreach (datacolumn col in dtb.columns)
{
drow.add(col.columnname, row[col.columnname]);
}
dic.add(drow);
}
return jss.serialize(dic);
}
然后写回到前台
[html]
复制代码 代码如下:
///
/// 处理异步请求
///
private void processrequest()
{
response.contenttype = text/html;
string json = request.form[json];
//反序列化datatable
datatable newdtb = json2dtb(json);
//序列化datatable为json
string back = dtb2json(newdtb);
response.write(back);
response.end();
}
///
/// 处理异步请求
///
private void processrequest()
{
response.contenttype = text/html;
string json = request.form[json];
//反序列化datatable
datatable newdtb = json2dtb(json);
//序列化datatable为json
string back = dtb2json(newdtb);
response.write(back);
response.end();
}
在前台接受显示:
[html]
复制代码 代码如下:
$(function() {
//点击botton1
$(#botton1).click(function() {
createtable(json);
});
});
//显示json中的数据
function createtable(json) {
var table = $(
);
for (var i = 0; i o1 = json[i];
var row = $(
);
for (key in o1) {
var td = $( );
td.text(o1[key].tostring());
td.appendto(row);
}
row.appendto(table);
}
table.appendto($(#back));
}
$(function() {
//点击botton1
$(#botton1).click(function() {
createtable(json);
});
});
//显示json中的数据
function createtable(json) {
var table = $(
);
for (var i = 0; i o1 = json[i];
var row = $(
);
for (key in o1) {
var td = $( );
td.text(o1[key].tostring());
td.appendto(row);
}
row.appendto(table);
}
table.appendto($(#back));
}
这样,就完成了json向后台传输数据和显示后台数据了,当然,这种传输方式只是传输的一种,如果是简单的字符串也可以用get和post进行传输,但是,javascript本身具有不安全性和不稳定行,对于一些比较重要的数据,建议还是寻找一些更可靠的方法。
其它类似信息

推荐信息