【问题标题】:Razor page POST handler not receiving JSON data from jQuery AJAXRazor 页面 POST 处理程序未从 jQuery AJAX 接收 JSON 数据
【发布时间】:2020-04-07 19:06:12
【问题描述】:

我正在使用 jQuery .ajax() 向 Razor 页面处理程序发送 POST 请求。网络选项卡显示此数据正在按预期发送:

我的断点确认我正在处理处理程序,尽管 invitationId 没有出现(或者至少没有正确反序列化):

JavaScript如下:

class GenericService {
  constructor(controller) {
    this.controller = controller;
  }

  async post(data, handler = "") {
    return await $.ajax({
      type: "post",
      beforeSend: function (xhr) {
        xhr.setRequestHeader("XSRF-TOKEN", $('input:hidden[name="__RequestVerificationToken"]').val());
      },
      data: JSON.stringify(data),
      url: `/${this.controller}${handler}`,
      contentType: "application/json",
      dataType: "json"
    });
  }
}
(async () => {
  const _ajax = new GenericService("Admin/Index");
  await _ajax.post({ invitationId: 1 }, "Reset");
})();

我想我误解了隐式反序列化,但我在互联网上其他地方看到的示例似乎表明发送 JSON 序列化对象应该没问题。

这是使用 .NET Core 3.0。

谁能在这里解释一下我的问题是什么?

【问题讨论】:

    标签: javascript jquery ajax asp.net-core razor


    【解决方案1】:

    正如预期的那样,我在反序列化方面遇到了一些问题。

    如果我将数据作为普通对象发送而不序列化(并从.ajax() 选项中删除相应的json 类型声明),invitationId 就会出现。

    return await $.ajax({
      type: "post",
      beforeSend: function (xhr) {
        xhr.setRequestHeader("XSRF-TOKEN", $('input:hidden[name="__RequestVerificationToken"]').val());
      },
      data: data,                            //Remove JSON.stringify(...)
      url: `/${this.controller}${handler}`
      //contentType: "application/json",       Remove
      //dataType: "json"                       Remove
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-02
      • 2020-10-18
      • 1970-01-01
      • 2013-07-28
      • 2013-12-30
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      相关资源
      最近更新 更多