我在页面中有一个AJAX脚本,在firefoex中没有错误,但是IE6在状态栏上加载了一个丑陋的错误图标。我可以解决这个问题的最佳方法是什么?
以下是错误报告:
我已多次查看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);
}
答案 0 :(得分:1)
在IE中,您可以尝试旧的script debugger或Visual 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