【问题标题】:How to get JSON POST data in ASP.NET Web Forms?如何在 ASP.NET Web 窗体中获取 JSON POST 数据?
【发布时间】:2015-03-20 20:50:32
【问题描述】:

我目前有一些 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 时,它会返回正确的已发布字节数。

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

提前致谢。

【问题讨论】:

  • data 是您的数据 - 几天前遇到了同样的问题:stackoverflow.com/questions/29132493/…
  • 不过,我需要在将 asp.net 中的数据发布到我的后端服务后访问它。 data 对象正是我用来发布 json 数据的对象。
  • 哦,我现在明白了 - 可能会考虑更改您的 data 变量名,但不确定它是否会造成混乱。无论如何,不​​确定如何完成您正在寻找的 - 但是,请看这里:msdn.microsoft.com/en-us/library/aa530946.aspx
  • 是的,我将更改变量名称,以便更清楚。谢谢

标签: jquery asp.net json post webforms


【解决方案1】:

发布 javascript 对象:

  1. 将纯对象传递给数据选项,
  2. 保留 contentType 选项。默认选项是完美的。

然后你可以访问Request集合中对象的属性值,就像你发布了一个表单一样。

服务器端:

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

发布 Json:

  1. 数据:JSON.stringify(person),
  2. contentType:“应用程序/json”

服务器端:

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

【讨论】:

  • 如何在 Web 表单中执行此操作?我没有提供任何后端代码只是因为真的没有什么可看的。我只是在使用Request.Params,并在其中设置了一个断点,这样我就可以使用即时窗口来尝试查找我的数据。
  • 我不确定网络表单,但尝试在您的 ajax 中添加数据:JSON.stringify(data)。在代码隐藏中,像这样 NameValueCollection coll; //将表单变量加载到 NameValueCollection 变量中。 coll=Request.Form;
  • 如果这不起作用,您可能想要使用 Web 服务。很抱歉没有提供太多帮助
  • 嗯,还是一无所获。不过谢谢。如果我使用 JSON 以外的东西,我可以像往常一样使用 Request.Params 吗?只是想知道是否有任何解决方法。
  • 嗨 Jeremy,所以如果你想通过 jQuery 发布一个 JavaScript 对象,请将纯对象传递给 data 选项,并保留 contentType 选项。默认选项是完美的。然后,您可以访问 Request 集合中对象的属性值,就像您发布了一个表单一样。 mikesdotnetting.com/article/220/…
猜你喜欢
  • 1970-01-01
  • 2013-07-23
  • 2018-09-01
  • 1970-01-01
  • 2021-01-31
  • 2012-07-24
  • 1970-01-01
  • 2018-02-26
  • 1970-01-01
相关资源
最近更新 更多