前台如何把数据传给够短_前台和后台数据传递综合总结

1.前台将Json字符串数据传递到后台进行处理

//var Json = '{"User":[{"UserName":"a","PassWord":"a"},{"UserName":"b","PassWord":"b"}]}';这是前台

string json = Request.Form["Json"];

JObject o = (JObject)JsonConvert.DeserializeObject(json);

JToken arr = (JToken)o["User"];//此地返回的是多条记录,所以要遍历

foreach (var token in arr)

{

Person p = JsonConvert.DeserializeObject(token.ToString());

//在此对p进行增删改操作,p已经是一个实体类的实例

}

Response.End();

对Json字符串进行后台处理,需要应用到程序集Newtonsoft.Json.dll

另外:如果是一条记录的Json,处理方式是:

//var Json = '{"UserName":"c","PassWord":"c"}';这是前台

string json = Request.Form["Json"];

JObject o = (JObject)JsonConvert.DeserializeObject(json);

JToken arr = (JToken)o;//此地返回的是一条记录,不进行选项选择都是一条,不用遍历

Person p = JsonConvert.DeserializeObject(arr.ToString());

//在此对p进行增删改操作,p已经是一个实体类的实例

Response.End();

2.组织对象,然后转换为Json字符串

var opts = {

UserName: "d",

PassWord:"d"

};

var json = jsonParseString(opts);

方法jsonParseString 代码如下

//JSON对象转字符串

function jsonParseString(o) {

try {

if (o == undefined) { return ""; }

var r = [];

if (typeof o == "string") return "\"" + o.replace(/([\"\\])/g, "\\$1").replace(/(\n)/g, "\\n").replace(/(\r)/g, "\\r").replace(/(\t)/g, "\\t") + "\"";

if (typeof o == "object") {

if (!o.sort) {

for (var i in o)

r.push("\"" + i + "\":" + jsonParseString(o[i]));

if (!!document.all && !/^\n?function\s*toString\(\)\s*\{\n?\s*\[native code\]\n?\s*\}\n?\s*$/.test(o.toString)) {

r.push("toString:" + o.toString.toString());

}

r = "{" + r.join() + "}"

} else {

for (var l = 0; l < o.length; l++)

r.push(jsonParseString(o[l]))

r = "[" + r.join() + "]";

}

return r;

}

return o.toString().replace(/\"\:/g, '":""');

} catch (e) { return e.Message; }

}

最终生成的json字符串为:var Json = '{"UserName":"d","PassWord":"d"}',满足传递到后台的需求

3.前台直接传递到自己的后台,添加Response.End();可以防止传递HTML到前台

4.后台将数据转换为Json传递到前台

这是后台代码:

protected void Page_Load(object sender, EventArgs e)

{

if (Request.Form["Type"] == "GetJson")

{

Person p = new Person();

p.UserName = "e";

p.PassWord = "e";

string json = JsonConvert.SerializeObject(p);//此处将对象转换为Json了

Response.Write(json);

Response.End();

}

}

注意还可以将对象集合转换为Json,实例代码:

List persons = new List();

Person p = new Person();

p.UserName = "f";

p.PassWord = "f";

persons.Add(p);

persons.Add(p);

string json = JsonConvert.SerializeObject(persons);//此处将对象转换为Json了 内容为 "[{\"UserName\":\"f\",\"PassWord\":\"f\"},{\"UserName\":\"f\",\"PassWord\":\"f\"}]"

Response.Write(json);

Response.End();

同时他还可以将DataTable转换为Json字符串,实例代码如下:

protected void Page_Load(object sender, EventArgs e)

{

if (Request.Form["Type"] == "GetJson")

{

DataTable dt = ZXGA.Utility.DbHelperOleDb.Query(App_Init.ConnStr(),"select * from jjdwb").Tables[0];

string json = JsonConvert.SerializeObject(dt);

Response.Write(json);

Response.End();

}

}

下面是前台代码:

$.post("test2.aspx", { Type: "GetJson" }, function (data) {

//var obj = $.parseJSON(data);//方法一

var obj = eval('(' + data + ')'); //方法二

alert(obj.UserName);

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值