我正在尝试将一些数据发送到通用处理程序,并使用 jQuery.ajax() 将这些信息传递回响应中。由于某种原因,当我根据我发现的另一个问题的答案( .NET Simple Form Submit via AJAX and JQUERY )发送数据时, context.Request 对象中没有任何内容。
这是我的 ajax 调用:
function retrieveStats(monster) {
$.ajax({
type: "POST",
url: "MonsterRequests.ashx",
data: { "monster": monster },
contentType: "application/json; charset=utf-8",
success: function (msg) {
alert(msg.d);
},
error: function (jqXhr, status, errorThrown) {
alert(errorThrown);
}
});
}
这是我的处理程序的代码:
public class MonsterRequests : IHttpHandler {
public void ProcessRequest (HttpContext context) {
string monsterName = context.Request["monster"];
context.Response.ContentType = "text/plain";
context.Response.Write("{\"d\":\"" + monsterName + "\"}");
}
public bool IsReusable {
get {
return false;
}
}
}
我可以通过访问 context.Request.InputStream 并通过 StreamReader 读取来获取信息,但我很好奇为什么我不能直接从请求中获取信息。
任何有关此问题的帮助将不胜感激。
最佳答案
删除内容类型,因为您没有发送 json。试试这个。
var monster = "value";
$.ajax({
type: "POST",
url: "MyHandler.ashx",
data: { monster: monster },
success: function(msg) {
alert(msg.d);
},
error: function(jqXhr, status, errorThrown) {
alert(errorThrown);
}
});
关于.net - AJAX 请求数据不存在于 HttpContext 对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20510027/