我有简单的代码示例:
<?php
error_reporting(E_ALL | E_STRICT);
if (isset($_POST['test'])) {
$data = array('test');
echo json_encode($data);
exit;
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> </script>
<script type="text/javascript">
$(document).ready(function() {
var inCheck = false,
setIntervalId = 0;
function check() {
if (inCheck) {
console.log('inCheck!');
return;
}
inCheck = true;
var random = "noCache=" + (new Date().getTime()) + Math.random();
$.ajax('/?' + random, {
dataType: 'json',
type:'POST',
data: {'test': 1},
success: function() {
console.log('ok');
inCheck = false;
},
error: function() {
console.log('error');
inCheck = false;
}
});
}
function setCheck() {
clearInterval(setIntervalId);
setIntervalId = setInterval( check, 10000 );
}
setCheck();
});
</script>
</body>
</html>
我在本地Web服务器(Apache 2.4,PHP 5.4,Win7)上启动它。当我只使用Firefox 20.0.1时,没关系。我收到消息'确定'并且没有滞后。当我试图在Firefox和IE9上同时启动这个例子时,我得到了奇怪的时间滞后。在萤火虫中,我看到超时4-5秒(时间通常约为3-4毫秒)。当我在Firefox和上一次Opera中运行此测试时 - 它再次正常。所以问题与IE9有关。你能帮我吗 ?问题的根源是什么?为什么我看到这么奇怪的行为?提前谢谢。