2013-08-28 45 views
2

我有一個名爲在一個文件夾名爲test foo.js小腳本所在目錄的位置是未知目錄:讓JavaScript中使用它在

$.post("bar.php"); 

它是由兩個不同的HTML文件,一個在/test/index.html:

<script src="foo.js"></script> 

在/test/index.html另:

<script src="../foo.js"></script> 

當我從/index.html運行腳本時,它工作正常,並調用bar.php。但是當我從/subdirectory/index.html中調用它時,javascript告訴我無法找到資源(bar.php)。但是,如果我複製並粘貼到/子目錄bar.php,它的作品。

有沒有一種方法讓JavaScript使用腳本所在的目錄(在這種情況下,測試),而不是使用它最初調用的任何目錄?

回答

5

/使用相對路徑到您的域名,通過啓動它:

$.post("/bar.php"); 

這樣也沒關係,其中腳本,或者調用了HTML文件是,只有位置bar.php事宜。你也應該可能包括foo.js以同樣的方式:

<script src="/foo.js"></script> 

這將在這兩個文件/index.html/subdirectory/index.html工作。

編輯:要真正找出你的腳本所在,相對於當前頁面,您可以使用此:

(function(){ 
    var myDirectory = (function(){ 
    var script = document.currentScript || // SHIM 
     (function(){ 
     var scripts = document.getElementsByTagName('script'); 
     return scripts[scripts.length - 1]; 
     })(); 

    var src = script.getAttribute('src'); 
    return src.substr(0, src.lastIndexOf('/')) + '/'; 
    })(); 


    // The rest of your script here, then, wherever you make the post request: 
     $.post(myDirectory + "bar.php"); 

})(); 
+0

吶,我應該澄清,根是一個未知的文件夾,我不能使用絕對路徑,還有一種方法來找到位置? – Luke

+0

@Luke是的,但它不漂亮。我會更新我的答案。 – Paulpro

+0

@Luke我已經用腳本的方式更新了它,以獲取相對於當前頁面的路徑,這就是您的$ .post請求也是相對的,所以現在應該可以工作。 – Paulpro

2

嘗試/bar.php

您需要使用相對路徑

相關問題