Я использую include, чтобы вставить один и тот же код jQuery на все страницы моего сайта. Проблема заключается в том, что при выполнении вызова AJAX установка относительной ссылки для URL-адреса работает только для некоторых страниц, а не для всех.

Я не могу установить URL-адрес AJAX из корня сайта, потому что URL-адрес изменяется в зависимости от версии продукта / выпуска.

Я не хочу обновлять включаемый файл при каждом выпуске, чтобы убедиться, что он имеет правильный абсолютный URL.

Синтаксис URL: <domain>/<product>/<version>/<content>

Каталог <content> содержит html-страницы, а также подкаталоги с дополнительными страницами.

Один URL может быть <domain>/<product>/<version>/topics/green/goingGreen.html, а другой - <domain>/<product>/<version>/lists.html. Очевидно, что относительный URL-адрес для вызова AJAX не будет работать для обеих страниц.

Как заставить вызов AJAX работать для всех файлов на сайте через include без использования абсолютной ссылки?

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, чтобы извлекать содержимое из определенного файла и отображать всплывающее окно, когда пользователь наводит курсор на определенные термины.

1
Mike K. 11 Фев 2013 в 23:27

1 ответ

Лучший ответ

Вы можете обрезать текущий URL-адрес до нужного количества косых черт:

Например,

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

Вернет первые три части вашего URL (/ domain / product / version). Замените {3} любым другим числом, если хотите, чтобы на вашем текущем пути было другое количество уровней. Используйте это, чтобы сформировать ваш URL-адрес AJAX как абсолютный путь (который по-прежнему чувствителен к вашему текущему относительному положению).

2
Plynx 11 Фев 2013 в 23:34