C# jQueryPost在本地工作,但不在服务器上工作

C# jQueryPost在本地工作,但不在服务器上工作,c#,jquery,asp.net-mvc-4,post,C#,Jquery,Asp.net Mvc 4,Post,我刚刚将所有jQueryPOSTs移动到外部文件。因此,我将Url.Action更改为实际的Url: $(".performance-box").click(function () { $.ajax({ url: '/Home/Performance', type: 'POST', success: function (data) { if (data) { // Unrelated Stuff } } })

我刚刚将所有jQuery
POST
s移动到外部文件。因此,我将
Url.Action
更改为实际的Url:

$(".performance-box").click(function () {
$.ajax({
    url: '/Home/Performance',
    type: 'POST',
    success: function (data) {
        if (data) {
            // Unrelated Stuff
        }
    }
});
})
此URL在服务器上不起作用,因为它是相对路径,对吗

因此,我将其更改为
~/Home/Performance
,但现在它在本地不起作用

任何关于如何在外部文件中实现这一点的指导都会很有帮助。

将Url.Action(“controller”、“Action”)存储在视图中的全局js变量中,然后在外部js中使用它。这就是我要做的。 因为您可能会在默认网站中本地托管您的站点,而在生产环境中则不是这样。使用Url操作将确保您拥有正确的Url

   <script>
    $(document).ready(function () {
        init();
    });

    function init() {
        url = '@Url.Action("Controller", "Action")'
    }
</script>

只要在MVC中正确配置了路由,就应该能够使用不带波浪号(~)的路由

C#

Jquery:

    ajax: {
        url: "/admin/users/autocomplete",
        dataType: 'json',
        type: 'POST',
        cache: true
    }

它们在同一台服务器上吗?记住,相对路径是相对于您所在的当前目录的。我不确定我是否知道您的意思。服务器上的文件结构应该与我在本地主机上运行时完全相同。首先要开始检查浏览器开发工具-F12的“网络”选项卡中的实际请求。还应该在ajaxJust中实现一个错误处理程序,结果是404-通常我使用将其放入
Html.Hidden
中,这样我可以从外部文件访问它,但这次尝试使用实际路径~是一个服务器命令,在那里不起作用。试试Moe的回答我想你需要在@Url.action周围加引号这是有效的,但是我必须给
Url
赋值,而不声明它(所以是全局的),以便在外部文件中访问它
    //controller class attributes
    [RouteArea("admin")]
    [RoutePrefix("users")]

    //method
    [HttpGet, Route("autocomplete", Name = "Admin_Users_AutoComplete")]
    public JsonResult Autocomplete(string q)
    {
          //do autocomplete
    }
    ajax: {
        url: "/admin/users/autocomplete",
        dataType: 'json',
        type: 'POST',
        cache: true
    }