AJAX发布请求错误404

时间:2018-02-08 17:21:06

标签: ajax asp.net-mvc

我正在尝试从root用户的index.html到我的控制器做一个AJAX帖子。但它在firefox控制台中返回404 Not Found。

的index.html:

    <!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>
<body>

    <script>
        $.ajax(
            {
                url: "api/postData",
                type: "POST",
                dataType: 'json',
                success: function (result) {
                    console.debug(result);
                    alert(result);
                },
                error: function (xhr, status, p3, p4) {
                    console.debug(xhr);
                    var err = "Error " + " " + status + " " + p3;
                    if (xhr.responseText && xhr.responseText[0] == "{")
                        err = JSON.parse(xhr.responseText).message;
                    alert(err);
                }
            });
    </script>

</body>
</html>

我的控制器:

    namespace MyAPI.Controllers
{
    [Route("api/postData")]
    public class MyAPIController : ApiController
    {
        [HttpPost]
        public bool Post()
        {

            return true;
        }
    }
}

我是否需要在RouteConfig.cs中设置一些内容?

由于

2 个答案:

答案 0 :(得分:0)

更新您的AJAX网址以包含方法:

 url: "api/postData/Post"

您也可以尝试更改:

 type: "POST" 

 method: "POST"

答案 1 :(得分:0)

您的网址不正确。您指定的URL将导致控制器本身。而且,由于您没有默认的index(GET)方法,您必须为方法本身指定路由:

namespace MyAPI.Controllers
{
    [Route("api")]
    public class MyAPIController : ApiController
    {
        [HttpPost]
        [Route("postData")]
        public bool Post()
        {

            return true;
        }
    }
}

这将使您想要的网址成为您当前使用的网址。

Ither选项是删除这两个路线。然后您的网址将为myapi/post

查看Documentation以获取更多信息和选项。