HttpContext对象中不存在AJAX请求数据

时间:2013-12-11 03:35:37

标签: .net ajax httpcontext

我正在尝试将一些数据发送到通用处理程序,并使用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读取信息,但我很好奇为什么我不能直接从请求中提取信息。

对此的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

删除内容类型,因为您没有发送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);
        }
    });