AJAX调用的相对URL-如何通过include使其适用于网站中的所有文件



我使用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形成为一个绝对路径(它仍然对您当前的相对位置敏感)。

最新更新