问题描述
我有以下脚本。 @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
的值,它不是空的或空的,它正在工作。但是,在我的控制器中,当 fetchChatsForUser
调用 ajax
时,发送的数据为空。
这是控制器
public IActionResult fetchChatsForUser(string Username)
{
Chat Chats = new Chat();
return PartialView("_Chatroom",Chats);
}
控制器中的 string Username
始终为空,即使我在 ajax 中传递数据。不过,该方法确实被调用了。我在这里做错了什么
解决方法
你的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);
}
结果