2014-01-22 17 views
0

我在這裏所描述的相同問題負載平衡器(MVC的Web API): Javascript in Virtual Directory unaware of Virtual DirectoryjQuery的GET到位置的虛擬目錄的背後

但使用隱藏域的提出的解決方案或服務器端生成的JSON設置對象不適合我,因爲服務器端實際上並不知道它是自己的url。如果我做Url.Content(「〜」),我只是得到一個代碼運行的機器之一的IP,所以我永遠不能在JavaScript中使用該路徑。它還返回一個http url而不是外部https url。

所以更準確地說: https://myhost.com/myapp//*這裏就是我的代碼運行*/

我可以在jQuery中使用相對路徑(是這樣的:$。獲得(「API /控制器」)),但應用程序如果用戶使用'https://myhost.com/myapp'(所以沒有結尾斜槓)不起作用。 (嗯,事實上在頁面被加載,但回調失敗,因爲缺少斜線的)

我可以使用絕對路徑,但在服務器端代碼並​​不知道實際的URL ...

是有沒有什麼辦法讓JavaScript返回帶有尾部斜線的虛擬目錄的完整絕對路徑(即使瀏覽器地址中沒有尾部斜線)?

Thx

回答

3

好吧,明白了。它現在在等相關問題給出了兩個早期的答案組合:

我繼續使用相對路徑,我也使用這些設置JSON,這將容納包括虛擬目錄的相對路徑:

<script type="text/javascript"> 
    var settings = { 
     baseUrl: '@Url.Content("~")' 
    }; 
</script> 

這將解析爲:

<script type="text/javascript"> 
    var settings = { 
     baseUrl: '/MyApp/' /* <-- always has trailing slash */ 
    }; 
</script> 

而我只需將它前綴到每個jQuery $ .get操作我做。

如果有人有更好的東西,我很樂意提供建議!