Кажется, у меня проблема с длинным опросом и IE. Это мой первый набег на длительный опрос, поэтому я создал простой тест, чтобы посмотреть, смогу ли я заставить его работать. Кажется, он отлично работает с FF и Chrome, но у меня разные результаты с IE.
Во-первых, вот какой код:
HTML / JavaScript:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Untitled Document</title> <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script> <script type="text/javascript" src="js/jquery-ui-1.9.2.min.js"></script> <script type="text/javascript"> //<![CDATA[ $(document).ready(function() { (function poll() { $.ajax({ url: 'events/alert-data.php', success: function (e) { $('#results').append($('<div>Success: ' + e.text + '</div>').fadeIn(1000)); }, error: function (e) { console.log(e); }, dataType: 'json', complete: poll, timeout: 10000 }); })(); }); //]]> </script> </head> <body> <div id="results">hello</div> </body> </html>
PHP:
<?php $time = time(); while (time() - $time < 5) { } echo json_encode(array('text' => time())); ?>
В FF / Chrome я вижу ожидаемые данные:
hello Success: 1356104196 Success: 1356104201 Success: 1356104217 Success: 1356104222 Success: 1356104227
Но в IE он бесконечно повторяет первую строку Success
. По крайней мере, я предполагаю, что он бесконечен, поскольку он блокирует браузер и не позволяет мне прокручивать.
Я не уверен, что я делаю неправильно. Любая помощь приветствуется.
Заранее спасибо.
Проблема с IE, по-видимому, является следствием кэширования, возможно, самой IE. Это может произойти в любом браузере.
Попробуйте добавить:
cache: false
к параметрам ajax.