AJAX post 不发送数据.Net Core

AJAX post doesn't send data .Net Core

我有以下脚本。 @username 是来自模型的变量。

  <script>
                    var username = "@username"
                    $.ajax({

                          url: '@Url.Action("fetchChatsForUser")',
                          data: { Username: username },
                          type: "POST",
                          dataType: 'JSON',
                          contentType: "application/json",
                          success: function (e) {
                              console.log(e);
                              $("#Chatroom").html(e)
                          },
                          error: function (passParams) {
                              console.log("Error is " + passParams);
                          }
                      })

</script>

我检查了 username 的值,它不为空或 null,它正在工作。但是在我的控制器中,当 fetchChatsForUserajax 调用时,发送的数据为空。 这是控制器

public IActionResult fetchChatsForUser(string Username)
    {
        Chat Chats = new Chat();
        
        return PartialView("_Chatroom", Chats);
    }

即使我在 ajax 中传递数据,控制器中的 string Username 始终为空。尽管确实调用了该方法。我在这里做错了什么

您的 ajax 使用 POST 并且您的函数是 Get。所以你需要把 [HttpPost]

[HttpPost]
public IActionResult fetchChatsForUser(string Username)

或者你试试这个jquery一个。

<script>
var username = "@username";
$.post('@Url.Action("fetchChatsForUser")', { Username: username }).done(function (e) {
   console.log(e);
   $("#Chatroom").html(e);
});
</script>

因为是body,所以可以这样改

Ajax, 添加 JSON.stringify(username).

                var username = "@username"
                $.ajax({

                      url: '@Url.Action("fetchChatsForUser")',

                      data: JSON.stringify(username),
                      type: "POST",
                      dataType: 'JSON',
                      contentType: "application/json",
                      success: function (e) {
                          console.log(e);
                          //$("#Chatroom").html(e)
                      },
                      error: function (passParams) {
                          console.log("Error is " + passParams);
                      }
                  })

烘焙

    [HttpPost]
    public IActionResult fetchChatsForUser([FromBody]string Username)
    {
        Chat Chats = new Chat();

        return PartialView("_Chatroom", Chats);
        
    }

结果