jQuery POST在本地工作,但不在服务器

时间:2015-10-27 19:51:46

标签: c# jquery asp.net-mvc-4 post

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

$(".performance-box").click(function () {
$.ajax({
    url: '/Home/Performance',
    type: 'POST',
    success: function (data) {
        if (data) {
            // Unrelated Stuff
        }
    }
});
})

此URL在服务器上不起作用,因为它是相对路径,对吗?

因此,我将其更改为~/Home/Performance,但现在无法在本地使用。

有关如何在外部文件中处理此问题的任何指导都会有所帮助。

2 个答案:

答案 0 :(得分:1)

将Url.Action(“controller”,“action”)存储在视图中的全局js变量中,然后在外部JS中使用它,这就是我要做的。 由于您可能在默认网站中本地托管您的网站,而生产中并非如此。使用网址操作可确保您拥有正确的网址。

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

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

外部JS

 $(".performance-box").click(function () {
$.ajax({
    url: url,
    type: 'POST',
    success: function (data) {
        if (data) {
            // Unrelated Stuff
        }
    }
});

答案 1 :(得分:1)

只要您的路由在MVC中正确配置,您就应该能够使用没有波浪号(〜)的路由。

C#

    //controller class attributes
    [RouteArea("admin")]
    [RoutePrefix("users")]

    //method
    [HttpGet, Route("autocomplete", Name = "Admin_Users_AutoComplete")]
    public JsonResult Autocomplete(string q)
    {
          //do autocomplete
    }

Jquery的:

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