2011-03-08 169 views
1

我的一些参数发送到使用的代码的ASP.NET方法:如何从请求中获取Json?

$.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发送的数据? 在此先感谢。

+0

这难道不是在'result'内'成功()'回调? – Orbling 2011-03-08 15:10:35

+0

@Orbling:他想要在服务器上获取请求数据。 – SLaks 2011-03-08 15:15:03

回答

4

您需要使用StreamReaderRequest.InputStream中的原始数据读取到字符串中,然后解析字符串中的JSON。

如果您使用的是页面方法,您可以简单地修改页面方法,将[Serializable]类作为参数,并使用与传入的JSON匹配的属性。

+0

谢谢@SLaks。我的问题是现在我想使用context.Session。我用IRequiresSessionState接口标记了该类,但是在将Session [“xyz”]设置为值后,第二次为null。这是什么原因? – Zoliqa 2011-03-09 12:27:29

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的这是一个更容易一些:)

+1

+1为一个很好的答案。希望我可以给出关于MVC的评论的另一个+1(它确实更容易)。 – JasCav 2011-03-08 15:23:51