2015-10-27 108 views
0

我剛把所有jQuery POST都移到了外部文件中。所以我改變Url.Action到實際的URL:jQuery POST在本地工作,但不在服務器上

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

,因爲它是一個相對路徑,正確此網址沒有在服務器上運行?

因此,我將其更改爲~/Home/Performance,但現在這在本地不起作用。

有關如何在外部文件中處理此問題的任何指導將有所幫助。

+0

他們是在同一臺服務器上?記住一個相對路徑是相對於你所在的當前目錄。 –

+0

我不確定我是否知道你的意思。在本地主機上運行時,文件結構應該與服務器上的完全相同。 – cfly24

+0

首先要開始檢查瀏覽器開發工具-F12的網絡選項卡中的實際請求。也應該在你的ajax中實現一個錯誤處理程序 – charlietfl

回答

1

在你的視圖中存儲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 
     } 
    } 
}); 
+0

我認爲你需要引用@ Url.Action – Vince

+0

真的。感謝文斯,編輯:) – Moe

+0

這工作,但我必須分配一個值'url'而不聲明它(所以它的全局),以便在外部文件中訪問它 – cfly24

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 
    } 
相關問題