4

何らかの理由で、以下は IE ではリダイレクト ループを引き起こしますが、Chrome や Firefox ではそうではありません。

<?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 という名前で、Cookie の存在をチェックし (それは問題ではありません。それについて続けたり、最善の方法を教えてくれたりしないでください)、これを同じスクリプトに戻します。上部の PHP は、何かが投稿されたかどうかを検出する必要があります。投稿されている場合は、post 変数のみを表示して終了します (残りのスクリプトは読み込まないでください)。

Chrome と Firefox では、これは完全に機能します。IE では無限にリダイレクトされます。そのため、IE は変数を投稿しておらず、何度も再読み込みしているようです。

4

1 に答える 1

0

私の意見では、IEでは「a」変数を投稿しないというあなたの意見は正しかったですが、フォームを投稿する必要があります。したがって、問題はJavaScriptとIEとの互換性にあると思います。

私はフォームを投稿しないようにしますが、それが返すべきだと思う値を返すかどうかを確認しようとします.mbyalert(value);または送信機能にコメントして、入力が値を取得したかどうかを確認します.

編集: isset($_POST['a']) OR strlen($_POST['a'])>0=> isset($_POST['a'])strlen($_POST['a'])>0 が true の場合とまったく同じ効果で、 isset($_POST['a']) も true になります。

于 2012-08-17T14:09:42.833 に答える