【问题标题】:AJAX post doesn't send data .Net CoreAJAX 帖子不发送数据.Net Core
【发布时间】:2021-05-02 02:20:14
【问题描述】:

我有以下脚本。 @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 的值,它不为空或为空,它正在工作。然而,在我的控制器中,当fetchChatsForUserajax 调用时,发送的数据为空。 这是控制器

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

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

【问题讨论】:

  • 它仍然为空

标签: asp.net-core .net-core asp.net-core-mvc asp.net-ajax


【解决方案1】:

您的 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>

【讨论】:

  • 这解决了这个问题。我有另一个函数在我的控制器中调用相同的方法。现在这不起作用$(document).on("click", ".shadow-inner.block.rounded-l.h-auto.border-b-2.mt-2.cursor-pointer", function () { $.post('@Url.Action("fetchChatsForUser")', { Username: $(this).data("username") }).done(function (e) { $("#Chatroom").html(e); })
  • 您只需在按钮中输入新的 css 类名称,而不是输入许多 css 类。比如,View。 $(document).on("click", ".btn-fetch-user", function () { });并确保您的按钮的数据用户名具有价值。
  • 另一种方法是为您的按钮添加功能。 查看。函数 FetchUser(btn) { $.post(....); }
  • 这能解决您的问题吗?如果已解决,可以将其标记为已解决。谢谢。
【解决方案2】:

因为是从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);
        
    }

结果

【讨论】:

    猜你喜欢
    • 2019-12-16
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多