为什么jQuery代码不能在IE中工作?
这适用于除IE以外的所有浏览器。我不知道为什么。它只是一个ajax时钟,可以在秒钟之间跳动。为什么jQuery代码不能在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>
我知道你已经用POST
解决了这个问题,但也有另一种方法,使用the cache
option for $.ajax()
。如果设置为false
,jQuery将追加时间戳的URL作为参数,迫使即使在IE中一个新的请求,你用这样的:
$.ajax({
cache: false,
//current options you already have...
});
应该不是你的代码是:
ajaxCallback(isDST);
在阿贾克斯成功回调函数中ajaxTimeCall
?
如果您可以提供有关您所看到的错误的更多详细信息,那也有帮助。
对不起,我想这将有助于知道我所看到的。它在IE中显示错误格式的错误时间。如果您在FF或Chrome或Safari中查看它,可以看到正确的时间。它看起来像从其他浏览器获取服务器数据的不同值。我不知道为什么格式不同,但。 此外,我认为回调名称是正确的,因为当我在document.ready节中调用ajaxTimeCall时,将ajaxCallback()函数传递到该回调名称中?那是不正确的? – gmills82 2010-08-31 18:04:37
更新! Wtf IE7 - AJAX calls using setTimeout这篇文章包含了我的问题的答案。 IE使用GET变量的缓存版本,因此每次AJAX调用php脚本时都不会更新时间。我将它改为POST,它像一个魅力。感谢所有的帮助家伙!
检查这是答案:) – 2010-08-31 18:37:06
进一步更新:有人提到在jquery的ajax调用中使用缓存选项。这就是我最终要做的。我将Post转回GET,并将缓存设置为false,并且工作正常。我也玩过在php头文件中设置缓存选项。 – gmills82 2010-09-02 10:47:22
你的问题是你的问题:它的“在IE” – bradenkeith 2010-08-30 21:04:43
您指定的Coult“不起作用”?会发生什么,以及这与预期的有何不同?你有任何错误信息? – Guffa 2010-08-30 21:10:35
它如何“不起作用”? jQuery在IE中不能完全工作,但通常会比较干净地弃用。 – codersarepeople 2010-08-30 21:11:45