我有問題,異步Ajax調用不工作在Safari中。它適用於所有其他瀏覽器,但不適用於Safari。當按鈕或錨點被點擊以調用Ajax函數時,這只是一個問題。異步Ajax無法在Safari中與重定向
我有下面創建一個非常簡單的例子:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Ajax issue is Safari</title>
<script src="//code.jquery.com/jquery-2.2.3.js"></script>
<script>
$(document).ready(function() {
$('#mybutton').click(function(){
$.ajax({
type: "POST",
dataType: "text",
async: true,
url: "dosomething.php",
error: function(a,b,c){
alert("Ajax Error");
},
success: function(data){
alert(data);
},
});
});
});
</script>
</head>
<body>
<a href="page2.php" id="mybutton">Click here</a>
</body>
</html>
哪裏dosomething.php是
<?php
echo "Success. Click ok to be redirected.";
?>
這個例子中的一個活版本是在這裏:http://visionfactor.com.au/ajax-safari/
雖然存在href = Ajax總會吐出一個錯誤。一旦我刪除了href,它就會起作用。如果我使用按鈕而不是錨點並用Javascript重定向,情況也是如此。同樣的結果,而重定向到位。
現在我意識到我可以把重定向放在Ajax成功回調中,但是我不想這樣做,因爲它看起來沒有必要,因爲它應該像其他所有瀏覽器一樣在Safari中工作。同樣在我的真實世界(非簡化)代碼中,這樣做非常混亂,因爲我有多個鏈接/按鈕的相同類,所以它們都執行相同的Ajax,但每個都重定向到不同的位置。因此,那麼我將不得不通過其他一些值,例如另一個類,以便定義特定於該鏈接的相關重定向...就像我說的那樣混亂。
如何在Safari中使這個非常簡單的代碼工作?
感謝, 妮可
的Firefox彈出然後迅速出現「阿賈克斯錯誤」第2頁 - 有**是沒有重定向發生** –
這是完全可能Safari會中止默認的點擊操作,因爲有一個Ajax正在進行。你必須更加明確地表達所期望的行爲,而不是讓瀏覽器做他們想做的事情,並希望它們保持一致。 – apokryfos
dosomething.php中有錯誤。嘗試'返回false;'在ajax調用並排除代碼故障後 – progrAmmar