关于jquery ajax 后台取值问题

MYsce 2017-12-07 05:25:03
在webform 和mvc 用request["Persons"] 拿不到值是空的?我想把json 数组传到后台之后反序列得到一个LIst<Person>类型,那么用Request如何拿到值?
$.ajax({
type: "POST",
url: Url,
contentType: "application/json",
dataType: "json",
data: JSON.stringify({
"Persons":[ {name:"张三",Age:15},{name:"李四",Age:19} ]

}),
success: function (data) {
alert(data);
}
});
在mvc 自动填充可以拿到LIst<Pseron>对象,我想在webform 用request拿

HttpPost]
public ActionResult (List<Person> Persons)
{
;
}
...全文
221 13 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
圣殿骑士18 2017-12-09
我的案例:

controller:
  • 打赏
  • 举报
回复
圣殿骑士18 2017-12-09
引用 4 楼 MYsce 的回复:
[quote=引用 3 楼 starfd 的回复:]
data: {jsondata: JSON.stringify({
                "Persons":[ {name:"张三",Age:15},{name:"李四",Age:19} ]
            })},
你这样就可以Request["jsondata"]取到字符串,否则就按2L的读取输入流再转成字符串
你这方法后台取不了值啊,Request["jsondata"] 是null值啊,[/quote] 这个方法应该是可以的,估计是你其他什么地方写的不对。
  • 打赏
  • 举报
回复
使用 jquery 提交数据时,你可以使用 post 而不使用原始的形式。例如
        jQuery.post(url, message, function(str)
       {
             ......................
        });
这种形式,那么 jquery 会自动根据 message 的类型而动态声明 mime 类型。不用你自己写多余的参数。
  • 打赏
  • 举报
回复
取得post 的 字符串文本数据,确实是 Request.InputStream 来读取。这并非是 request["Persons"] 来查询某个部分,而是要自己先将 post 的整个字符串反序列化为对象。
  • 打赏
  • 举报
回复
既然你要传送的数据是文本字符串,那么就不能乱写 dataType: "json",。
  • 打赏
  • 举报
回复
MYsce 2017-12-09
引用 3 楼 starfd 的回复:
data: {jsondata: JSON.stringify({
                "Persons":[ {name:"张三",Age:15},{name:"李四",Age:19} ]
            })},
你这样就可以Request["jsondata"]取到字符串,否则就按2L的读取输入流再转成字符串
但是REquest拿不了是null
  • 打赏
  • 举报
回复
MYsce 2017-12-09
引用 7 楼 daixf_csdn 的回复:
我的案例: controller:
这个方法可以拿到值,var json=new System.IO.StreamReader(Request.InputStream).ReadToEnd();
  • 打赏
  • 举报
回复
MYsce 2017-12-09
引用 6 楼 daixf_csdn 的回复:
[quote=引用 4 楼 MYsce 的回复:] [quote=引用 3 楼 starfd 的回复:]
data: {jsondata: JSON.stringify({
                "Persons":[ {name:"张三",Age:15},{name:"李四",Age:19} ]
            })},
你这样就可以Request["jsondata"]取到字符串,否则就按2L的读取输入流再转成字符串
你这方法后台取不了值啊,Request["jsondata"] 是null值啊,[/quote] 这个方法应该是可以的,估计是你其他什么地方写的不对。[/quote] 真的拿不了值,你们试下就知道啦! 这个方法可以拿到值
  • 打赏
  • 举报
回复
一叶无秋 2017-12-08
protected T FillModel<T>(FormCollection c) where T : new() { T obj = new T(); Type type = typeof(T); PropertyInfo[] props = type.GetProperties(); Type ptype; string val = ""; foreach (var prop in props) { ptype = prop.PropertyType; if (c.AllKeys.Where(x => x.ToLower().Trim() == prop.Name.ToLower().Trim()).Count() == 0) { continue; } val = c[prop.Name]; if (ptype == typeof(bool)) { prop.SetValue(obj, true, null); continue; } if (prop.PropertyType.Name == "Guid") { prop.SetValue(obj, DataFormater.GetGuid(val), null); continue; } if (ptype == typeof(int)) { prop.SetValue(obj, DataFormater.GetInt(val), null); continue; } if (ptype == typeof(DateTime)) { prop.SetValue(obj, DataFormater.GetDatetime(val), null); continue; } if (ptype.IsEnum) { if (!string.IsNullOrEmpty(val)) prop.SetValue(obj, Enum.Parse(ptype, val), null); continue; } if (ptype == typeof(decimal)) { prop.SetValue(obj, DataFormater.GetDecimal(val), null); continue; } prop.SetValue(obj, val, null); } return obj; }
  • 打赏
  • 举报
回复
insus 2017-12-08
参考这些,如果还不会,那真要远程看你是怎样操作的了: http://zzk.cnblogs.com/s?w=blog%3Ainsus%20post
  • 打赏
  • 举报
回复
MYsce 2017-12-08
引用 3 楼 starfd 的回复:
data: {jsondata: JSON.stringify({
                "Persons":[ {name:"张三",Age:15},{name:"李四",Age:19} ]
            })},
你这样就可以Request["jsondata"]取到字符串,否则就按2L的读取输入流再转成字符串
你这方法后台取不了值啊,Request["jsondata"] 是null值啊,
  • 打赏
  • 举报
回复
data: {jsondata: JSON.stringify({
                "Persons":[ {name:"张三",Age:15},{name:"李四",Age:19} ]
            })},
你这样就可以Request["jsondata"]取到字符串,否则就按2L的读取输入流再转成字符串
  • 打赏
  • 举报
回复
by_封爱 2017-12-08

var json=new System.IO.StreamReader(Request.InputStream).ReadToEnd();
然后针对json进行反序列化..
  • 打赏
  • 举报
回复
相关推荐
发帖
.NET社区
加入

6.0w+

社区成员

.NET技术交流专区
社区管理员
  • ASP.NET
  • R小R
  • 喵叔哟
帖子事件
创建了帖子
2017-12-07 05:25
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。