1

ロング ポーリングと 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行を無限に繰り返します。少なくとも、ブラウザがロックされてスクロールできなくなるので、無限だと思います。

何が間違っているのかわかりません。どんな助けでも大歓迎です。

前もって感謝します。

4

1 に答える 1

3

IEの問題は、おそらくIE自体によるキャッシュの結果であるように思われます。これは、どのブラウザでも発生する可能性があります。

追加してみてください:

cache: false 

ajaxオプションに。

于 2012-12-21T16:05:45.947 に答える