2014-10-08 40 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