次の理由により、IEではリダイレクトループが発生しますが、ChromeやFirefoxではリダイレクトループは発生しません。 (そのことについてに行くか、それを行う方法最善の私に助言しようとしない、それは問題ではないのです)、その後の記事をJavascript IEリダイレクションループ(一部のPHPの場合)
<?php
if (isset($_POST['a']) OR strlen($_POST['a'])>0)
{
die($_POST['a']);
}
?>
<html>
<head>
<script type="text/javascript" src="fpjs2.js"></script>
</head>
<body>
<form name="fbif" id="fbif" action="checkcookie.php" method="POST">
<input type="hidden" name="a" value="" />
</form>
<script>
var ec = new MyObject();
ec.get("fbuid", function(value) {
document.fbif.a.value=value;
document.fbif.submit();
});
</script>
</body>
</html>
スクリプトがcheckcookie.phpと呼ばれ、それがクッキーの存在をチェックこれは同じスクリプトに戻ります。一番上のPHPは、何かがポストされているかどうかを検出しなければなりません。ポスト変数を表示して終了する(スクリプトの残りの部分をロードしない)場合。
ChromeとFirefoxでは、これは完全に機能します。 IEでは、それは無限にリダイレクトされます。つまり、IEは変数をポストしているのではなく、何度も何度も繰り返し読み込んでいるようです。
MyObjectとec.getは何をしていますか? –
私はそれを書いていないので、私が知らないことがたくさんあります。もう少しテストした後で、これがec.getなしでは起こらないことを確認できるので、何とか問題を引き起こしています。しかし、それはフォームを提出するように頼まれていない場合、リダイレクトされません。さらに、別のページにフォームを送信しようとしても、それはループ内でまだ更新されます。 – Alasdair
私の最高の推測では、そのオブジェクトのコードには、値を持たない 'value'という特定のバグがあるということです。関数の先頭に 'alert(value)'を実行し、その中で何が設定されているのかを確認してください。値に値がない場合、MyObject()を修正する必要があります –