jQueryPOST可以在本地运行,但不能在服务器上运行

本文关键字:运行 但不能 服务器 jQueryPOST | 更新日期: 2023-09-27 18:19:26

我刚刚将所有jQuery POST移动到外部文件。所以我将Url.Action更改为一个实际的URL:

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

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

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

任何关于如何在外部文件中处理这一问题的指导都将有所帮助。

jQueryPOST可以在本地运行,但不能在服务器上运行

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

   <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
        }
    }
});

只要在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
    }
相关文章: