无法从 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 帖子中“调用”控制器操作的主要内容,如果未能解决你的问题,请参考以下文章

MVC ajax json 发布到控制器操作方法

使用ajax将@Model从视图发送到控制器

从 grails 中的 gsp 页面进行 ajax 调用

控制Ajax调用中settimeout的速度

JavaFX TabPane从外部控制器中选择选项卡

如何在 ASP.Net MVC 5 中调用嵌套 ajax 调用并将对象数据发送到控制器