Как я могу отладить этот сценарий AJAX для IE? - PullRequest
1 голос
/ 31 мая 2009

У меня есть и AJAX-скрипт на странице, который прекрасно работает без ошибок в firefoex, но IE6 загружает страницу с ужасным значком ошибки в строке состояния. Каков наилучший способ исправить / отладить это?

Вот сообщение об ошибке:

alt text

Я проверял строку 323 много раз. Вот функция:

function checkAvailability(){

   var card_select  = document.getElementById('card_select').value;
   var price_select = document.getElementById('price_select').value;
   var num_of_cards = document.getElementById('num_of_cards').value;
   var url = 'checkAvailability.php?cardName=' + card_select + '&value=' + price_select + '&amount=' + num_of_cards;

   var xmlhttp;
            if (window.XMLHttpRequest)
            {
                // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();
            }
            else if (window.ActiveXObject)
            {
                // code for IE6, IE5
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            else
            {
                alert("Your browser does not support XMLHTTP!");
            }

            xmlhttp.onreadystatechange =    function()
                                            {
                                                if(xmlhttp.readyState == 4 && xmlhttp.responseText) /**** line 323 ****/
                                                {
                                                    document.getElementById('submit_button').className      = 'hidden';
                                                    document.getElementById('div_error_massage').className  = 'anounce_div';
                                                    document.getElementById('error_massage').innerHTML      = xmlhttp.responseText;
                                                    document.getElementById('num_of_cards').className       = 'red_inputs';
                                                }
                                                else if(isNaN(num_of_cards))
                                                {
                                                    document.getElementById('submit_button').className      = 'hidden';
                                                    document.getElementById('num_of_cards').className       = 'red_inputs';
                                                    document.getElementById('div_error_massage').className  = 'hidden';

                                                }
                                                else if(num_of_cards != "" && !xmlhttp.responseText) 
                                                {
                                                    document.getElementById('submit_button').className      = '';
                                                    document.getElementById('error_massage').innerHTML      = 'Total: $' + document.getElementById('price_select').value * document.getElementById('num_of_cards').value  + '.00';
                                                    document.getElementById('div_error_massage').className  = 'anounce_div';

                                                }
                                                else
                                                {
                                                    document.getElementById('submit_button').className      = 'hidden';
                                                    document.getElementById('num_of_cards').className       = 'red_inputs';
                                                }
                                            }




            xmlhttp.open("GET",url,true);
            xmlhttp.send(null);

}

Ответы [ 4 ]

1 голос
/ 31 мая 2009

В IE вы можете попробовать старый скрипт-отладчик или Visual Web Developer Express . Когда выдается ошибка, войдите в отладчик и проверьте xmlhttp.

0 голосов
/ 31 мая 2009

Отличный отладчик JavaScript для IE поставляется с MS Office.

Быстрый гугл показывает это как:

0 голосов
/ 31 мая 2009

Вы пытаетесь прочитать! Xmlhttp.responseText, когда readyState не равен 4

Попробуйте удалить эту строку и посмотрите, работает ли IE.

0 голосов
/ 31 мая 2009

В дополнение к ответу outis, если вы хотите контролировать, куда вы переходите с помощью отладчика, используйте ключевое слово debugger Javascript, которое действует как точка останова. Когда нажата строка с debugger;, в IE вы получите приглашение (если в IE включена отладка, проверьте настройки Интернета), чтобы запустить отладчик, начиная с этой строки. В Firefox оператор debugger; воспринимается Firebug как точка останова.

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