无法从 ajax 帖子中“调用”控制器操作
Posted
技术标签:
【中文标题】无法从 ajax 帖子中“调用”控制器操作【英文标题】:Unable to 'call' controller action from ajax post 【发布时间】:2021-10-19 14:24:19 【问题描述】:我今天第一次使用 net.core,我试图从 ajax 调用中调用一个操作方法:
我的 Ajax 调用(来自普通的 html 页面)
$("#contactMap").click(function (e)
e.preventDefault();
var url = "/MapObjects/mapContact";
//I've tried MapObjectsController & '@Url.Action("mapContact", 'MapObjects")'; But to no avail
$.ajax(
url: url,
type: 'POST',
contentType: 'application/json; charset=utf-8',
cache: false,
success: function (result)
alert("success");
);
);
在我的控制器中:
namespace myName.Controllers
public class MapObjectsController : Controller
public IActionResult Index()
return View();
[HttpPost]
public JsonResult mapContact()
Account account = new Account();
return Json(account);
“帐户”只是一个普通模型(在这种情况下为空)。我收到的只是控制台中的 404 错误。
如前所述,这是我第一次使用 .net Core(这是我在“普通”MVC 项目中多次编写的代码),所以我可能遗漏了一些非常明显的东西。
谢谢, C
【问题讨论】:
嗨@SxChoc,当您通过邮递员发送请求时,它可以工作吗?您是否使用了类似app.UseEndpoints(endpoints =endpoints.MapControllerRoute(name: "default",pattern: "controller=Home/action=Index/id?"););
的路由模板?请分享您的 Startup.cs。
【参考方案1】:
首先,尝试在 Ajax 调用中显式调用@Url.Action()
:
$("#contactMap").click(function (e)
e.preventDefault();
$.ajax(
url: '@Url.Action("mapContact", "MapObjects")',
type: 'POST',
contentType: 'application/json; charset=utf-8',
cache: false,
success: function (result)
alert("success");
);
);
第二,检查你的路由规则。
【讨论】:
以上是关于无法从 ajax 帖子中“调用”控制器操作的主要内容,如果未能解决你的问题,请参考以下文章