1

インクルードを使用して、サイトのすべてのページに同じ jQuery コードを挿入しています。問題は、AJAX 呼び出しを行うときに、URL の相対リンクを設定すると、すべてではなく一部のページでのみ機能することです。

製品/リリース バージョンによって URL が変わるため、サイト ルートから AJAX URL を設定できません。

インクルード ファイルが正しい絶対 URL を持っていることを確認するために、すべてのリリースでインクルード ファイルを更新する必要はありません。

URL の構文は次のとおりです。<domain>/<product>/<version>/<content>

ディレクトリには、<content>html ページと、より多くのページを含むサブディレクトリが含まれています。

ある URL は で<domain>/<product>/<version>/topics/green/goingGreen.htmlあり、別の URL は である可能性があります<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 の最初の 3 つの部分 (/domain/product/version) を返します。{3}を、現在のパスに別の数のレベルを取得する他の番号に置き換えます。これを使用して、AJAX URL を絶対パスとして形成します (これは現在の相対位置に影響されます)。

于 2013-02-11T19:34:39.260 に答える