Ошибка при зацикливании запросов AJAX в Firefox - PullRequest
0 голосов
/ 07 февраля 2011

Я пытаюсь создать фрагмент Javascript, который подключается к серверу, получает ответ, а затем автоматически подключается снова.

<head>
    <title>tests</title>

    <script type="text/javascript" src="/javascripts/jquery.min.js"></script>
    <script type="text/javascript">
        function requestData() {
            var oRequest = new XMLHttpRequest();

            oRequest.onreadystatechange = handleData;

            oRequest.open( 'GET', '/test.php', true );
            oRequest.send( null );
        }

        function handleData() {
            if( this.readyState == 4 ) {
                document.write( this.responseText );
                requestData();
            }
        }

        $(function(){

            requestData();

        });         
    </script>

</head>

<body>
</body>

Приведенный выше код отлично работает в chrome, но после двух запросов скрипт не работает в Firefox со следующей ошибкой ...

requestData не определен

Кто-нибудьзнаете почему это происходит?В данный момент сервер отвечает только однозначными числами.(PS Я знаю, что это не работает в IE, это нормально)

Спасибо

Ответы [ 2 ]

1 голос
/ 07 февраля 2011

Я предполагаю, что два запроса - это столько, сколько требуется Firefox, чтобы завершить обработку документа и закрыть его.Это означает, что при повторном вызове document.write он автоматически вызывает document.open и удаляет существующий документ, включая сценарии, поэтому функция удаляется.

Использование манипуляции DOM вместоdocument.write.

0 голосов
/ 07 февраля 2011

Если вы используете jquery, вы должны использовать $ .ajax или что-то в этом роде.Он проще в использовании и работает.

http://api.jquery.com/jQuery.ajax/

$.ajax({
    url: 'http://my_url', 
    success: function (data) {
        $.ajax({
            url: 'http://my_url_2', 
            success: function (data) {
                alert(data);
            }
        })
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...