ユーザーがサイトの用語集の単語にカーソルを合わせたときに、qTip を使用して一部のコンテンツを AJAX に変換しています。AJAX 応答には、サイト上の他のファイルへの相対リンクが含まれることがあります。問題は、AJAX 応答のリンクが、コンテンツが呼び出されたページではなく、ユーザーがいる現在のページから解決しようとすることです。
例
ユーザーはページにいます<site>/topics/flying/missTheGround.html
。ユーザーがホバーする用語集の用語があり、AJAX 呼び出しが行われ、からコンテンツがプルされ<site>/glossary.html
ます。AJAX 応答には、サイト内の別のファイル (たとえば、topics/swimming/drownLess.html
. AJAX 応答のリンクをクリックすると、FROM 現在のページを解決しようとするため、次のようになります<site>/topics/flying/topics/swimming/drownLess.html
。
AJAX 応答を変更するにはどうすればよいですか? 変更する必要があるのは 2 点です。
- 応答内のローカル アンカー リンクは、ユーザーを現在のページから用語集ページ (正しいターゲットを指す) にリダイレクトする必要があります。
- 「#」で始まる href を見つけ、ローカル ターゲット リンクを へのリンクに変更する文字列を追加します
<site>/glossary.html#<whatever the link target was>
。
- 「#」で始まる href を見つけ、ローカル ターゲット リンクを へのリンクに変更する文字列を追加します
- 応答内の相対リンクは、ユーザーを現在のページからリンクされたページの正しい場所にリダイレクトする必要があります。
- 「トピック」で始まる href を見つけて、ターゲットを絶対 (ルートから) に変更する文字列を追加します。
<site>/topics/running/goFast.html
- 「トピック」で始まる href を見つけて、ターゲットを絶対 (ルートから) に変更する文字列を追加します。
私のAJAXコード:
content: {
text: 'Loading...',
ajax: {
url: '<local file> #' + $(this).text().toLowerCase(),
success: function (elems) {
if (elems.length) {
this.set('content.text', elems);
var $elems = $(elems);
} else {
this.destroy();
}
}
}
},