2013-06-04 144 views
0

當我從例如Ajax或其他函數調用JavaScript中的文件時,JavaScript會嘗試調用它相對於當前地址而不是來自baseURL或root。Javascript調用相對路徑而不是從web根目錄

例子,如果我在domain.com/my-page/和我打電話使用

$.post('ajax/class.designer.php', { action: 'getcard', cardID: id }, 
     function(data) { 
      loadCard(data) 
     }, "json"); 

它試圖調用domain.com/my-page/ajax/class的PHP文件。 designer.php,當我真的想要它調用domain.com/ajax/class.designer.php。

與插件如CKEditor一樣,嘗試調用它的相對於當前地址的.css文件。

該應用程序使用mod_rewrite和友好的url。一切都重定向到index.php,它位於/和index.php中,然後調用函數來顯示頁面。

我已經設置了RewriteBase /並且我還將HTML頭中的baseurl設置爲根路徑。

注意:當我在本地主機上運行它時,一切正常。當我將它移到我的實時服務器時,問題就開始了。

+0

放了一個斜槓'/ ajax/class.designer.php' –

回答

2

在ajax前面加一個斜槓即/ajax。當你離開斜線時,你會得到相對路徑,即相對於你所在的路徑。要獲得絕對路徑,請始終以/開頭。

+0

是的,當然我可以放一個/我的電話。但正如我所說的,這也會擾亂我正在嘗試從/調用的插件(如CKEditor)中的調用。 因此,我正在尋找使所有JavaScript從我的根頁面運行的方式。它在localhost上運行良好,甚至在子頁面上運行得很好,所以從那以後肯定會有不同或「錯誤」的東西? –

+1

@MarcusLind然後我不太確定你的問題是什麼。這個電話怎麼會搞砸別的東西?您需要發佈更多代碼或更明確地解釋在此上下文中使用絕對路徑的影響。 – dewd

+0

@MarcusLind:這聽起來像是你有一個單獨的問題與CKEditor。也許作爲一個單獨的問題發佈。 –

0

上述答案的替代方案是,您可以在頭部添加基本標記。這將告訴瀏覽器在哪裏啓動所有相對路徑。有了您的特定問題,您可以添加:

<base href="http://domain.com"> 

這會導致您添加的任何相對URL都是從根開始的。

相關問題