问题
很简单:除了锚标记<a>
的正常点击功能我想,如果锚被点击后触发AJAX GET
请求(在我的例子由class
值fire
归因)。Anchor Click和jQuery GET在FF和Safari中不起作用,但是在Chrome中工作,为什么?
重要:锚点(href)的目标以及Ajax
调用的目标在目标url中具有相同的域。
例jQuery代码:
$(document).ready(function() {
$('.fire').click(function() {
$.get("http://example.com/rest/fire/");
});
});
示例HTML代码:
<a href="http://example.com/index.html" class="fire">Click here</a>
在浏览器(V38)的asyncronous “发射后不管” - GET
请求被发送,然后浏览器显示的链接的页。在Firefox(v32)和Safari(Yosemite)中,异步GET请求不会被触发。为什么?
我甚至在JSFiddle测试它(我只看到了锚GET请求,而不是Ajax的GET请求/rest/fire
)
发现的解决方案(修订版2014年10月28日)
它不会在Safari工作,火狐因为$.get()
默认使用异步模式(正如我最初所希望的那样)。但是,如果目标网域与anchor
标记的网址相同,则Firefox和Safari似乎忽略了$.get()
。所以为了使它工作,你必须让阿贾克斯同步!
更新jQuery代码(现在也工作在Firefox和Chrome):
$(document).ready(function() {
$('.fire').click(function() {
$.ajax({
url: "http://example.com/rest/fire/" ,
async: false
});
});
});
谢谢@Clayton,我会测试它并给出一些反馈。可以肯定的是,我希望这两个工作:发送阿贾克斯和打开新的链接... – basZero 2014-10-28 07:01:14
嗨@Clayton,这是行不通的。它只会触发AJAX请求。正常的锚点点击不再有效。我需要一个执行两个请求的解决方案。 – basZero 2014-10-28 07:21:14