2013-06-04 99 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都是从根开始的。

相关问题