我在顶级域下的子文件夹中安装了几个wordpress站点:
我需要在每个文件中加载一个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
摆脱url路径中的前导“/”。前导斜杠表示“从站点的根目录”,而不是“从我当前的文件夹”。
编辑:好的,然后在每个“站点”的根索引中,您需要定义BASE HREF以包含该文件夹名称。然后,前导斜杠应该考虑该值而不是站点根。
你可以在de文件夹名称之前使用'..':
url: "../wp-content/themes/mytheme/data.xml"
我希望它在wp中有效。它通常适用于其他情况。
我最好的选择是检查位置,例如:
var pathname = window.location.pathname;
然后执行一些indexOf()来指定要指向的WP安装。
这是因为你用/
开始你的网址,这使它成为一个绝对的网址。要使它成为相对URL,请将其更改为url: "wp-content/themes/mytheme/data.xml",
。
我没有测试过,但这样的工作会不会有用呢?
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
});
最简单的解决方案
url: window.location.pathname + "/wp-content/themes/mytheme/data.xml",
也许您可以定义一个全局变量(我认为在这种情况下这是合理的)定义根目录:
rootFolder = location.pathname.substr(0, 7) === '/site-a' ? '/site-a/' : '/site-b/';
然后,您可以将此变量用于AJAX请求:
jQuery.ajax({
type: "GET",
url: rootFolder + "wp-content/themes/mytheme/data.xml",
dataType: "xml",
success: parseDataXML
});
请注意,window.location.pathname注意到您的目录结构。我承认很多情况下都有效,但并非总是如此! 刚刚写下来,因为也许有人在她/他的脑海中结束了MVC。
如果您的javascript代码是在php文件中编写的,那么使用
url: "<?php echo site_url(); ?>/wp-content/themes/mytheme/data.xml",
如果从php文件调用AJAX请求onclick,则在onclick中使用它
onclick="cat_ajax_get('some_value', '<?php echo site_url(); ?>');"
function cat_ajax_get(catID, ajaxurl) {
jQuery.ajax({
type: "GET",
url: ajaxurl + "/wp-content/themes/mytheme/data.xml",
dataType: "xml",
success: parseDataXML
});
}
我想他要问的是,是否有类似ms mvc Url.Content的东西,它允许你使用〜/导航到子域。我不认为在jquery中有类似的东西,或者至少我没有碰过它。您可能需要将子域硬编码到URL中。