我正在尝试通过 j Query $.post() 将数据从 MVC 视图 ASP.NET 发布到 WebApi 控制器,但我总是只收到空字符串(有趣的是 - 这适用于 Web 窗体)。这是JS。
$("#searchbtn").click(function () {
var ser = $("div#hotels").serialize();
$.post('/api/hotelsavailablerq', { '': ser });
});
以下是 ApiController 签名的外观:
[HttpPost]
public void PostHotelsAvailableRq([FromBody] string q)
仅使用纯 HTML 表单查看 -div、select、输入类型=文本。没有任何东西从模型绑定。
尝试另一个:
$.ajax({
url: '/api/hotelsavailablerq',
type: "POST",
contentType: 'application/json; charset=utf-8',
dataType: 'json'
data: JSON.stringify(ser)
});
请尝试以下代码来点击控制器。确保 api 控制器中有 hotelsavailablerq 操作方法。
$("#searchbtn").click(function () {
$.ajax({
url: '/api/hotelsavailablerq',
type: 'POST',
data: $('div#hotels').serialize(),
success: function (result) {
});});
好吧,我找到了答案 - RTFM。当我仔细阅读jQuery
有关serizlization
的文档时,我发现:
1. <form>
标签应该存在.
2. 每个控件应具有name
属性.
所有这些东西默认情况下都是 Web 表单,但在 MVC 中,我应该手动添加它。
尝试
$.post('/api/hotelsavailablerq', { 'q': ser });
string q
应该与您从 jQuery 发送的类型相同。