我该如何为IE调试这个ajax脚本?

时间:2009-05-30 22:54:38

标签: javascript ajax internet-explorer

我在页面中有一个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 个答案:

答案 0 :(得分:1)

在IE中,您可以尝试旧的script debuggerVisual Web Developer Express。错误抛出后,进入调试器并检查xmlhttp

答案 1 :(得分:0)

除了outis的回答之外,如果你想控制你在调试器中的位置,请使用Javascript的debugger关键字,它就像一个断点。当命中debugger;的行时,在IE中你将得到一个提示(如果在IE中启用了调试,请检查你的Internet选项)以从该行开始启动调试器。在Firefox中,debugger;语句被Firebug选为断点。

答案 2 :(得分:0)

当readyState不是4时,你试图读取!xmlhttp.responseText

尝试删除该行并查看IE是否运行。

答案 3 :(得分:0)

适用于IE的优秀Javascript调试程序随MS Office一起提供。

快速谷歌将此显示为一个方法:http://www.jonathanboutelle.com/mt/archives/2006/01/howto_debug_jav.html