出于某种原因,以下会导致 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 应检测是否已发布某些内容,如果已发布则仅显示发布变量并退出(不加载脚本的其余部分)。
在 Chrome 和 Firefox 上这完美地工作。在 IE 上它无休止地重定向。所以看起来 IE 并没有发布变量,而只是一遍又一遍地重新加载自己。
最佳答案
在我看来你是对的,在 IE 上它没有发布“a”变量,但它应该发布表单。所以我敢打赌问题出在您的 javascript 和与 IE 的兼容性上。
我会尝试不发布表单,而是尝试检查它是否返回您认为应该返回的值,mby with alert(value);
或者只是评论提交函数并检查输入是否得到值(value)。
编辑:isset($_POST['a']) 或 strlen($_POST['a'])>0
=> isset($_POST['a'])
完全相同的效果,如果 strlen($_POST['a'])>0 为真,则 isset($_POST['a']) 也为真。
关于php - Javascript IE 重定向循环(使用一些 PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10394330/