如何在ASP.NET Web窗体中获取JSON POST数据?

时间:2015-03-20 20:50:32

标签: jquery asp.net json post webforms

我目前有一些jquery将数据发布到我的一个网页上。

现在我只是试图让它发布一些JSON来测试它,但我不知道一旦发布它就必须在我的后端获得数据。

我一直使用Request.Params来获取发布的数据,但这次似乎没有用。

这是我用来做帖子的代码:

// This data is just for testing purposes, doesn't actually do anything
var person = {
    name: "Bob",
    address: "123 Main St.",
    phone: "555-5555"
}

var jqxhr = $.ajax({
    type: "POST",
    url: "/example/mypage.aspx",
    contentType: 'application/json; charset=utf-8',
    dataType: "json",
    timeout: 0,
    success: function () {
        alert("Success");
    },
    error: function (xhr, status, error) {
        alert(error);
    },
    data: person
});

这篇文章肯定是成功的,因为我可以看到它使用Fiddler,而且当我检查Request.ContentLength时它会返回发布的正确字节数。

但我无法在任何地方找到实际数据。 关于我做错了什么想法?

提前致谢。

1 个答案:

答案 0 :(得分:4)

发布javascript对象:

  1. 将普通对象传递给数据选项
  2. 单独保留contentType选项。默认选项是完美的。
  3. 然后,您可以访问Request集合中对象的属性值,就像您已发布表单一样。

    服务器端:

       string input;
        using(var reader = new StreamReader(Request.InputStream)){
                input = reader.ReadToEnd();
            }
    

    发布Json:

    1. 数据:JSON.stringify(person),
    2. contentType:“application / json”
    3. 服务器端:

      string json;
      using(var reader = new StreamReader(Request.InputStream)){
              json = reader.ReadToEnd();
          }
      var person = Json.Decode(json);
      

      参考: http://www.mikesdotnetting.com/article/220/posting-data-with-jquery-ajax-in-asp-net-razor-web-pages