为什么';这个jQuery代码在IE中不起作用吗?

为什么';这个jQuery代码在IE中不起作用吗?,jquery,ajax,Jquery,Ajax,这适用于除IE之外的所有浏览器。我不知道为什么。它只是一个以秒为单位的ajax时钟 <!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-equ

这适用于除IE之外的所有浏览器。我不知道为什么。它只是一个以秒为单位的ajax时钟

<!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>

时间程序测试
$(文档).ready(函数(){
区域='非洲/吉布提';
ajaxTimeCall(区域、ajaxCallback);
});
函数ajaxTimeCall(区域、回调){
$.ajax({
键入:“get”,
url:'time.php',
背景:这,,
数据:“位置=”+区域,
成功:功能(数据){
var dataSplit=data.split(“.”);
var isDST=数据分裂[1];
var newTime=新日期(数据分割[0]);
//console.log(newTime);
如果(isNaN(新时间))
{
$('时钟输入').val(“未识别时区”);
返回;
}
$('时钟输入').val(新时间);
回调(isDST);
}
}); 
}
函数ajaxCallback(isDST){
setTimeout(“ajaxTimeCall(区域,ajaxCallback)”,1000;
如果(isDST==1)
$('.DST').removeClass('noshow');
}
.noshow{display:none;}
.DST{颜色:红色;字体大小:14px;}
世界时间Ajax测试
(DST)

您的代码不应该是:

ajaxCallback(isDST);
在函数
ajaxTimeCall
中的ajax成功回调中


如果您可以提供有关所看到错误的更多详细信息,这也会有所帮助。

我知道您已经用
帖子解决了这个问题,但是还有另一种方法,使用。通过将其设置为
false
,jquery将向URL附加一个时间戳作为参数,即使在IE中也会强制执行一个新请求,您可以这样使用它:

$.ajax({
  cache: false,
  //current options you already have...
});

你的问题在你的问题中:它是“在IE中”你能指定“不工作”吗?发生了什么,这与您的预期有什么不同?您是否收到任何错误消息?它如何“不工作”?jQuery并不能完全在IE中工作,但它通常不推荐相对干净的方式。对此我感到抱歉,我想知道我看到了什么会很有帮助。它在IE中以不正确的格式显示不正确的时间。如果在FF、Chrome或Safari中查看,则可以看到正确的时间。从服务器返回的数据值似乎与其他浏览器不同。我不知道为什么格式不同。另外,我认为回调名称是正确的,因为在document.ready部分调用ajaxTimeCall时,我将ajaxCallback()函数传递到该回调名称中?这不对吗?