我有一个HTML文件,其中包含面包屑链接和一个触发AJAX调用的Javascript文件。
面包屑链接与HTML页面相关。 AJAX调用与webapp context-path相关。
例如,如果当前的HTML页面是http://host.com/context_path/companies/5/user/10/index.html(其中“5”和“10”是我提前不知道的任意ID):
如果我设置<base href="http://host.com/context_path/">
,那么AJAX调用工作正常,但我无法解析相对于HTML页面的痕迹链接。
我有什么方法可以使用客户端相关链接实现这一点吗?或者我是否被迫解析服务器端的链接?
答案 0 :(得分:0)
不幸的是,似乎没有办法做到这一点。如MDN中所述:
使用备注:如果指定了多个元素,则仅使用第一个href和第一个目标值;所有其他人都被忽略了 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
看起来唯一的方法是使用javascript将您的AJAX网址转换为完整网址。 $.ajax
可能有一种方法允许您在发出请求之前拦截AJAX请求并操纵URL。
Modifying a jQuery ajax request intercepted via ajaxSend()可能是一个很好的起点
答案 1 :(得分:0)
回答我自己的问题:
虽然<base>
标记确实影响了所有相对链接,但看起来location.href
指向原始HTML页面[1]。所以你可以做的是设置<base>
标签以满足AJAX调用,并使用Javascript代码设置相对于location.href
的痕迹链接。
[1]虽然我在HTML规范中找不到任何提及,但Chrome 34.0.1847.137m似乎也适用。