我正在通过JQuery的Ajax执行POST请求,数据类型定义为json
,包含要发布到服务器的值,类似Username: "Ali"
。
我在Handler中需要做的是读取值,将它们反序列化为名为User
的对象。
String data = new System.IO.StreamReader(context.Request.InputStream).ReadToEnd();
User user = JsonConvert.DeserializeObject<User>(data);
调试时,data
的值如下:
Username=Ali&Age=2....
现在我确定这不是JSON
,所以下一行肯定会产生错误:
"Unexpected character encountered while parsing value: U. Path '', line 0, position 0."
从POST请求中读取JSON
数据的正确方法是什么?
客户端
$.ajax({
type: 'POST',
url: "http://localhost:38504/DeviceService.ashx",
dataType: 'json',
data: {
Username: 'Ali',
Age: 2,
Email: 'test'
},
success: function (data) {
},
error: function (error) {
}
});
答案 0 :(得分:5)
将您的对象转换为json字符串:
$.ajax({
type: 'POST',
url: "http://localhost:38504/DeviceService.ashx",
dataType: 'json',
data: JSON.stringify({
Username: 'Ali',
Age: 2,
Email: 'test'
}),
success: function (data) {
},
error: function (error) {
}
});
答案 1 :(得分:4)
我不确定为什么你的数据字符串被编码为url(看起来像)。
但这可能会解决问题(尽管我不确定)
String data = new System.IO.StreamReader(context.Request.InputStream).ReadToEnd();
String fixedData = HttpServerUtility.UrlDecode(data);
User user = JsonConvert.DeserializeObject<User>(fixedData);
答案 2 :(得分:0)
使用此在c#文件中...将为您提供所需的结果......
string username=Request.Form["Username"].ToString();
同样对于其他人...... 我希望这会对你有所帮助
另一个答案或者你可以发送这样的数据
$.ajax({
url: '../Ajax/Ajax_MasterManagement_Girdle.aspx',
data: "Age=5&id=2"
type: 'POST',
success: function (data) {
}
});
ANd在c#
中得到这样的答案string Age=Request.Form["Age"].ToString();