問題
很簡單:除了錨標記<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