如何从请求中获取Json?

时间:2011-03-08 15:08:40

标签: jquery asp.net

我使用代码将一些参数发送到ASP.NET方法:

$.ajax({
        url: "/default.aspx/test.test",
        type: "POST",
        data: "{'parameter':'kapdbe'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            alert(result.d);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("Error");
        }
    });

然后我如何获取从HttpContext.Request发送的数据? 提前谢谢。

2 个答案:

答案 0 :(得分:4)

您需要使用Request.InputStreamStreamReader中的原始数据读入字符串,然后从字符串中解析JSON。

如果您正在使用页面方法,则只需修改页面方法即可将[Serializable]类作为参数,其属性与传入的JSON匹配。

答案 1 :(得分:2)

你写了

url: "/default.aspx/test.test"

那么,我猜错了 ASP.NET WebForms 吗?

  

将此信息放在问号标签中总是很好,因此我们可以帮助您更好,更快地

所以,你应该这样做:

url: "/json/test.ashx"

创建 Generic Handler (因此,您不需要处理所有ASP.NET页面生命周期,而且速度会快得多)

代码如下:

<%@ WebHandler Language="C#" Class="Handler" %>

using System.Web;

public class Handler : IHttpHandler {

    public void ProcessRequest (HttpContext context) {

        // Get your variable
        string param = context.Request["parameter"];

        // Do something with it    
        MyObject output = DoSomethingWithPAram(param);

        // Use Json.NET to get a nice JSON string
        string json = Newtonsoft.Json.JsonConvert.SerializeObject(output);

        // Output new stuff
        context.Response.ContentType = "text/plain";
        context.Response.Write(json);
    }

    public bool IsReusable {
        get {
            return false;
        }
    }    
}

希望它有所帮助......如果它 ASP.NET MVC 2/3 它会更容易一些:)