Safariで非同期Ajax呼び出しが機能しない問題が発生しています。他のすべてのブラウザで動作しますが、Safariでは動作しません。これは、Ajax関数を呼び出すためにクリックされたボタンまたはアンカーにリダイレクト/リンクがある場合にのみ問題になります。私は以下の本当に簡単な例を作成していリダイレクトでSafariで非同期Ajaxが機能しない
:dosomething.phpは、この例の
<?php
echo "Success. Click ok to be redirected.";
?>
ライブバージョンが
<!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>
であるここにある:http://visionfactor.com.au/ajax-safari/
がであるがhref = Ajaxは常にエラーを吐き出します。すぐに私はhrefを削除するように動作します。アンカーの代わりにボタンを使用し、代わりにJavascriptでリダイレクトする場合も同じです。同じ結果がリダイレクトされている間は同じです。
私はリダイレクトをAjaxの成功のコールバックに入れることができますが、他のすべてのブラウザと同じようにSafariで他の方法と同じように動作するはずなので、不要と思われます。また、私が実際に使っているコードでは、複数のリンク/ボタンに対して同じクラスを持つので、同じAjaxを実行しますが、それぞれ別の場所にリダイレクトするので、これを行うコードは面倒です。だから私は、そのリンクに関連するリダイレクトを定義するために、別のクラスなどいくつかの他の値を渡さなければなりません。
この単純なコードをSafariで動作させるにはどうすればよいですか?
おかげで、このようpreventDefault
を追加する ニコール
Firefoxは、 "Ajaxのエラーは、" すぐにその後、PAGE2が表示されたポップアップ表示 - それは完全に可能だ –
**が**何のリダイレクトが起こっていませんそのサファリは、デフォルトのクリックアクションを打ち切ります。なぜなら、ajaxが実行されているからです。あなたは、ブラウザーが望むようにして、一貫していることを望むよりも、望ましい動作をより明確にする必要があります。 – apokryfos
dosomething.phpにエラーがあります。 'return false;'を試してみてください。ajax呼び出しの後でコードのトラブルシューティングを行います。 – progrAmmar