这适用于IE以外的所有浏览器。我不知道为什么。它只是一个时钟的秒钟。
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Time Program Test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready( function(){
zone = 'Africa/Djibouti';
ajaxTimeCall(zone, ajaxCallback);
});
function ajaxTimeCall(zone, callback) {
$.ajax({
type: 'get',
url: 'time.php',
context: this,
data: 'location=' + zone,
success: function (data){
var dataSplit = data.split(".");
var isDST = dataSplit[1];
var newTime = new Date(dataSplit[0]);
//console.log(newTime);
if(isNaN(newTime))
{
$('#clock_input').val("Timezone Not Recognized");
return;
}
$('#clock_input').val(newTime);
callback(isDST);
}
});
}
function ajaxCallback(isDST) {
setTimeout("ajaxTimeCall(zone, ajaxCallback)", 1000);
if (isDST == 1)
$('.DST').removeClass('noshow');
}
</script>
<style type="text/css">
.noshow { display: none;}
.DST {color: red; font-size: 14px;}
</style>
</head>
<body>
<h1> World Time Ajax Testing</h1>
<span class="DST noshow">(DST)</span>
<form name="test" action="">
<input id="clock_input" style="width: 175px; font-size: 14px;" type="text" value="Turn on Javascript" />
</form>
</body>
</html>
答案 0 :(得分:2)
我知道你已经用POST
解决了这个问题,但还有另一种方法,使用the cache
option for $.ajax()
。通过将其设置为false
,jquery会将时间戳附加到URL作为参数,即使在IE中也强制执行新请求,您可以像这样使用它:
$.ajax({
cache: false,
//current options you already have...
});
答案 1 :(得分:1)
UPDATE! Wtf IE7 - AJAX calls using setTimeout这篇文章包含了我的问题的答案。 IE使用缓存版本的GET变量,因此在PHP脚本的每次AJAX调用时都没有更新时间。我将它改为POST,它就像一个魅力。感谢所有帮助人员!
答案 2 :(得分:0)
你的代码不应该是:
ajaxCallback(isDST);
在函数ajaxTimeCall
中的ajax成功回调中?
如果您可以提供有关您所看到的错误的更多详细信息,那也会有所帮助。