2014-10-08 57 views
0

我有我試圖調用從位於特定文件的Ajax請求:目錄路徑的呼叫,奇怪的行爲

ROOT/admin/functions/upload/filename.php 

而且從位於頁面發出請求:

ROOT/admin/customers/123 

它是通過htaccess的從

ROOT/admin/customer.php?id=123 

修改我都試過的,我能想到的路徑每個組合但我得到例如一些奇怪的行爲,當我使用

../functions/upload/filename.php 

它查找該文件中

ROOT/functions/uploads/filename.php 

當我使用

functions/upload/filename.php 

它查找該文件中

因此,我試過
../admin/functions/upload/filename.php 

它看起來在

ROOT/admin/admin/functions/upload/filename.php 

我拉我的頭髮在這裏,有沒有人有任何想法,這是什麼可能是什麼?

任何幫助將不勝感激。

謝謝,詹姆斯。

+0

爲什麼不使用像'/ functions/uploads/filename.php'這樣的絕對路徑?這將使您的文件可以從任何子目錄訪問。 – jeroen 2014-10-08 21:10:56

+0

我不得不改變我的所有PHP include/require相對路徑來處理XAMMP,但我試過它只是爲了查看它並在ROOT/functions/upload/filename.php中查找文件。 – 2014-10-08 21:14:28

+0

有兩種絕對路徑:在服務器端,文件系統和客戶端,相對於Web服務器的根。你到底有什麼問題? – jeroen 2014-10-08 21:16:24

回答

1

由於瀏覽器對服務器端路徑一無所知,它只有在地址欄中看到的路徑,例如,

http://example.com/ROOT/admin/customers/123 

那麼如果你的Ajax代碼看起來像

$.ajax('functions/foo/bar.php'); 

然後Ajax調用將請求

http://example.com/ROOT/admin/customers/123/functions/foo/bar.php 

同樣,加入../剛剝掉源網頁的地址的層次:

$.ajax('../../functions/foo/bar.php'); 

結果

http://example.com/ROOT/admin/customers/123/../../functions/foo/bar.php 
             ^-A-^ 
           ^-------B------^ 

http://example.com/ROOT/admin/functions/foo.bar.php 

你可能想

$.ajax('/ROOT/functions/foo/bar.php'); 

隨着行距/,瀏覽器會忽略所有的子目錄的東西在URL,並從Ajax調用採用全路徑的全部路徑。

http://example.com/ + /ROOT/functions/foo.bar.php 
+0

/ROOT/functions/foo/bar.php'爲我工作,我不知道爲什麼我不能在XAMPP中使用相對路徑,但它導致了問題,因爲我嘗試了一個實時版本,相對路徑工作正常。 – 2014-10-08 21:23:48