1

我正在使用包含将相同的 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 不适用于两个页面。

如何在不使用绝对链接的情况下通过包含使 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 从特定文件中提取内容以弹出窗口。

4

1 回答 1

2

您可以将当前 URL 剪辑为所需的斜杠数量:

例如,

var relpath = window.location.pathname.match(/^(\/[^\/]*){3}/)[0];

将返回您的 URL 的前三个部分(/domain/product/version)。将 替换为{3}您希望在当前路径中获得不同数量的级别的任何其他数字。使用它来将您的 AJAX URL 形成为绝对路径(这仍然对您当前的相对位置敏感)。

于 2013-02-11T19:34:39.260 回答