永发信息网

如何将数据以json格式传给前端

答案:1  悬赏:70  手机版
解决时间 2021-04-03 12:23
如何将数据以json格式传给前端
最佳答案
将数据以json格式传给前端:
function generateDtb() {
//写入
var txtName = document.getElementById("txtName").value;
//创建数组
var dtb = new Array();
//通过循环把数据写入到数组并返回
for (var i = 0; i < firstGroup.length; i++) {

var row = new Object();
row.Name = txtName;
row.fullMoney = firstGroup[i].value;
row.discount = secondGroup[i].value;
dtb.push(row);
}
return dtb;
}

把数组转换成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")

}
});
});

在后台的操作:
首先判断是否需要传输数据

if (!IsPostBack)
{
//判断是否异步请求
if (Request.QueryString["ajax"] == "1")
{
ProcessRequest();
}

在这里进行对数据的处理:
///
/// 处理异步请求
///

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 < newdtb.Rows.Count; 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
///
/// 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数据

///
/// 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);
}

然后写回到前台

///
/// 处理异步请求
///

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();
}

在前台接受显示:

$(function() {
//点击botton1
$("#botton1").click(function() {
createTable(json);
});
});

//显示Json中的数据
function createTable(json) {
var table = $("
");
for (var i = 0; i < json.length; 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"));
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
颍上有什么好玩的地方
跳蚤是个大力士,他能搬动比自己把多少倍的物
婆婆为什么不想让媳妇生孩子
oppo r7s 安卓系统和蓝牙版本是几点几
人生何时初涉世?何时人生方识己
上海八大金刚中哪一所宿舍条件好
西米替丁片11岁小孩能吃一个月吗
POF制袋机和OPP 制袋机一样吗?
被押的送到哪个看所守所了
刚申请的qq号能玩打大a不?
单选题下列物质的水解产物为纯净物的是A.蔗糖
字谜:裘服.(打一字)的相关文章推荐
如何撰写与目标匹配的“评价任务”
缇可春季篇夏天从远古大陆回来找昭华是多少集
三 文中说,北大富有的是精神。那么北大精神是
推荐资讯
主板上都包括什么 酷睿i5算是主板吗
光场相机和单反那个好
商务签名和公文签名是否一个意思
高三年段教师办公室标语
山东御鲜苑副食有限公司怎么样?
西凤酒华山论剑领奖
南航cZ3416航班Z舱在飞机哪个位置
爱情公寓里曾小贤说的靠你吉瓦是什么意思
2015各大网银跨行转账多少时间到账
想得到旁人的赞美是什么心理
2015新闻热点事件20条
杜牧枫树诗词,描写枫叶到了秋天的样子(一段
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?