html前台怎么接收后台传回来的json格式数据

html前台怎么接收后台传回来的json格式数据,第1张

$.ajax({

url:'',

type:'',

data:'',

dataType:'json',

success:function(result){

// .....

}

})

这个result就是传过来的json数据,然后按照对象的格式obj.attr取里面的值

将数据以json格式传给前端:

function generateDtb() {

//写入

var txtName = document.getElementById("txtName").value

//创建数组

var dtb = new Array()

//通过循环把数据写入到数组并返回

for (var i = 0i <firstGroup.lengthi++) {

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 = 0i <newdtb.Rows.Counti++)

{

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 = 0i <json.lengthi++) {

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"))

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9963073.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存