为什么这个jQuery代码不能在IE中运行?

时间:2010-08-30 21:01:19

标签: jquery ajax

这适用于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>

3 个答案:

答案 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成功回调中?

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