我使用includes将相同的jQuery代码插入到我的网站的所有页面中。问题是在执行AJAX调用时,为URL设置相对链接只适用于某些页面,而不是所有页面。
我无法从站点根设置AJAX URL,因为URL会根据产品/发布版本而更改。
我不想在每次发布时都更新包含文件,以确保它具有正确的绝对URL。
URL语法为:<domain>/<product>/<version>/<content>
<content>
目录包含html页面以及包含更多页面的子目录。
一个URL可能是<domain>/<product>/<version>/topics/green/goingGreen.html
,另一个可能是<domain>/<product>/<version>/lists.html
。显然,AJAX调用的相对URL不适用于这两个页面。
如何在不使用绝对链接的情况下,通过includes使AJAX调用适用于网站中的所有文件?
ajax: {
url: '<absolute link> #' + $(this).text().toLowerCase(),
loading: false,
success: function (elems) {
if (elems.length) {
this.set('content.text', elems);
var $elems = $(elems);
} else {
this.destroy();
}
}
}
如果你好奇的话,我使用qTip从特定文件中提取内容,当用户悬停在特定术语上时弹出。
您可以将当前URL剪切为所需的斜杠数:
例如,
var relpath = window.location.pathname.match(/^(/[^/]*){3}/)[0];
将返回您的URL(/domain/product/version)的前三部分。将{3}
替换为任何其他数字,以便在当前路径中获得不同数量的级别。使用它将AJAX URL形成为一个绝对路径(它仍然对您当前的相对位置敏感)。