Почему этот код jQuery не работает в IE? - PullRequest
2 голосов
/ 31 августа 2010

Это работает во всех браузерах, кроме 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>

Ответы [ 3 ]

2 голосов
/ 01 сентября 2010

Я знаю, что вы уже решили эту проблему с помощью POST, но есть и другой способ, используйте параметр cache для $.ajax(). Установив для него значение false, jquery добавит метку времени к URL-адресу в качестве параметра, заставляя новый запрос даже в IE, вы используете его так:

$.ajax({
  cache: false,
  //current options you already have...
});
1 голос
/ 31 августа 2010

UPDATE! Wtf IE7 - AJAX звонки с использованием setTimeout В этом посте содержался ответ на мой вопрос.IE использует кэшированные версии переменных GET, поэтому время никогда не обновлялось при каждом вызове AJAX сценария php.Я изменил его на POST, и он работает как шарм.Спасибо за помощь, ребята!

0 голосов
/ 31 августа 2010

Разве ваш код не должен быть:

ajaxCallback(isDST);

в вашем успешном обратном вызове ajax в функции ajaxTimeCall?

Если бы вы могли предоставить более подробную информацию об обнаруженной ошибке, это также помогло бы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...