前台代码:
$(function () {
var model = function (key) {
this.key = key;
}
var m = new model("abc");
$.ajax({
url: '/Demo.ashx',
type: 'POST',
data: JSON.stringify(m),
contentType: 'application/json; charset=utf8',
cache: false,
dataType: 'text',
success: function (data) {
alert(data);
},
error: function (xhr) {
alert("出现错误,请稍后再试:" + xhr.responseText);
}
});
});
Demo.ashx:
public class Demo : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World" + context.Request.Form["key"]);
}
public bool IsReusable
{
get
{
return false;
}
}
}
运行后弹出 "Hello World":
改为下面这样就可以了:
$.ajax({
url: '/Demo.ashx',
type: 'POST',
//data: JSON.stringify(m),
//contentType: 'application/json; charset=utf8',
data:{key:"abc"},
cache: false,
dataType: 'text',
success: function (data) {
alert(data);
},
error: function (xhr) {
alert("出现错误,请稍后再试:" + xhr.responseText);
}
});
如图:
有人知道为什么吗?
使用context.Request.InputStream去接看看,
data:{key:"abc"},这个只能做个demo,大的对象你怎么写,那不搞死。
我主要是想弄明白为什么用 JSON.stringify格式化参数 取不到值
用context.Request.InputStream 可以取到:
只是不明白为什么用 context.Request.Form["key"] 取不到值
@artwl: 你跟踪一下JSON.stringify(m)的结果,看看和{key:"abc"}有什么区别。去到之后你就随便玩吧,反序列化。
@artwl: 日,赶紧给分,强要了。。。
@小AI: 哈哈,行,给分
我已经回答 ,把分给我 ,
ss