先吐槽微软做的东西,都是看起来简单方便,实际完全不能用
比如我用jquery post一个json数据到后台,后台一个类接收
var data = {a:1,b:2,c:3}
$.ajax({
url: "control",
type: "POST",
data: data
dataType: "json",
success: function (data) {
alert(data);
}
});
后台
control(data a)
{
//这里就可以接收传过来的a了
}
你以为屌炸天了,可是如果是这样
data = [{a:1,b:2},{a:3,b:4}]
或者是
data = {a:1,b:[{c:3},{c:4}]}
后台就完全接收不到啦,微软这货只能实现简单的一级json数据
对于复杂json只有一种相对方便的方法,就是
$.ajax({
url: "AddInquiryFollow",
type: "POST",
data: JSON.stringify(data),//用一个专有方法把json变成字符串
dataType: "json",//完全可以不用,但如果用了json,如果服务端返回的数据不是json,则会报错
success: function (data) {
alert(data);
}
});
后台
string s = Request.Form.ToString();
JavaScriptSerializer jss = new JavaScriptSerializer();
IList<ReserveVoDto> sth = jss.Deserialize<IList<ReserveVoDto>>(HttpUtility.UrlDecode(s)); //用JavaScriptSerializer类把字符串转成任意类型