jquery调用c#api控制器

本文关键字:控制器 c#api 调用 jquery | 更新日期: 2023-09-27 18:20:29

我已经启动了一些基于ASP:NETMVC和javaScript/jquery的项目。我正试图用$.ajax函数对我的控制器进行api调用。但我总是得到404。我在谷歌上搜索并尝试了很多不同的解决方案,但我还是得到了404。我知道这个问题在网上经常被问到,但再次希望不会有太多-1。若有任何帮助,我将不胜感激,也许是因为森林的缘故,我看不见这棵树了。参数"datas"只是JSON格式的字符串。

我的代码在下面。

javascript调用:

function checkValidId(datas) {
    $.ajax({
        url: 'api/UserInfo/Test/',
        type: 'POST',        
        data: JSON.stringify(datas),
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function (valid) {
            if (valid) {
                console.log("HURAAAAY!!!");
            } else {
                console.log("OOOH NO YOU DON'T !!!");
            }
        }
    });
}

我的控制器:

public class UserInfoController : ApiController
    {
        private DM_DBEntities1 db = new DM_DBEntities1();
        [HttpPost]
        public static string Test(string data)
        {          
            return "H E L L L L O";
        }    
    }

我的WebApiConfig:

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.MapHttpAttributeRoutes();
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }

jquery调用c#api控制器

您配置的路由错误。

更改为:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}"
);

UserInfoController中的Test方法不需要返回ActionResult吗?