2011-06-08 61 views
22

我有下一个顶级域名安装在子文件夹中的几个WordPress网站:确定相对路径与jQuery

  1. http://www.mydomain.com/site-a/
  2. http://www.mydomain.com/site-b/

我需要加载一个AJAX文件中的每个人,我用下面的代码:

// Initiate asynchronous load of xml data: 
jQuery.ajax({ 
    type: "GET", 
    url: "/wp-content/themes/mytheme/data.xml", 
    dataType: "xml", 
    success: parseDataXML 
}); 

但最终寻找在域的根路径的文件:

http://www.mydomain.com/wp-content/themes/mytheme/data.xml 

取而代之的是网站的根路径:

http://www.mydomain.com/site-a/wp-content/themes/mytheme/data.xml 
+6

去掉url路径中的前导“/”,前导斜杠的意思是“从站点的根目录”,而不是“从我当前的文件夹” – 2011-06-08 17:47:45

+3

如果从子页面 - 例如htt p://www.mydomain.com/site-a/page/表示它将指向http://www.mydomain.com/site-a/page/wp-content/themes/mytheme/data.xml – Yarin 2011-06-08 17:49:30

+1

如果你可以做一些服务器脚本,你可以抓住当前的网站,并把它加到你的url路径中。 – 2011-06-08 17:51:03

回答

28

摆脱了领先的“/”的URL路径。前导斜杠的意思是“从网站的根目录”,而不是“从我目前的文件夹”。

编辑:好的,然后在每个“站点”的根索引中,您需要定义BASE HREF以包含该文件夹名称。然后,主斜杠应考虑该值而不是站点根目录。

+1

如果从子页面加载,则无法工作 - 例如, mydomain.com/site-a/page表示它将指向mydomain.com/site-a/page/wp-content/themes/mytheme/data.xml – Yarin 2011-06-08 17:50:02

+1

@ iKnowKingFoo-您能否澄清您的编辑 - 我在哪里定义BASE HREF? – Yarin 2011-06-08 17:53:09

+0

@Yarin http://www.w3schools.com/tags/tag_base.asp – MarkD 2011-06-08 17:55:56

3

这是因为你用/开始了你的url,这使得它成为一个绝对的url。要使其成为相对网址,请将其更改为url: "wp-content/themes/mytheme/data.xml",

+1

如果从子页面加载,则不起作用 - 例如, mydomain.com/site-a/page表示它将指向mydomain.com/site-a/page/wp-content/themes/mytheme/data.xml – Yarin 2011-06-08 17:51:28

+1

它加载的URL应与相关的.js文件相关如果你在一个PHP页面的内嵌'

2

我还没有测试过,但会这样的工作吗?

var baseUrl = "http://www.mydomain.com", 
    pathToDataXml = "/wp-content/themes/mytheme/data.xml", 
    siteDir = window.location.href.toString() 
       .replace(baseUrl, "") 
       .replace(pathToDataXml, ""); 

// Initiate asynchronous load of xml data: 
jQuery.ajax({ 
    type: "GET", 
    url: baseUrl + siteDir + pathToDataXml, 
    dataType: "xml", 
    success: parseDataXML 
}); 
0

请注意,window.location.pathname正在注意到您的目录结构。我承认很多情况是有效的,但并非总是如此!
只是写下来,因为也许有人最终在这里与MVC在她/他的想法。

-3

你可以简单地去之前,文件夹名使用“..”:

url: "../wp-content/themes/mytheme/data.xml" 

我希望它在可湿性粉剂。它通常适用于其他情况。

0

如果你的JavaScript代码的PHP文件中写入然后使用

URL:“/可湿性粉剂内容/主题/ mytheme的/数据。XML”,

如果从PHP文件调用AJAX请求的onclick然后使用此在的onclick

的onclick = “cat_ajax_get( 'SOME_VALUE', '');”

function cat_ajax_get(catID, ajaxurl) { 

jQuery.ajax({ 
type: "GET", 
url: ajaxurl + "/wp-content/themes/mytheme/data.xml", 
dataType: "xml", 
success: parseDataXML 
}); 

} 
1

最简单的解决方案:

url: window.location.pathname + "/wp-content/themes/mytheme/data.xml",