Вот мой Javascript код:Ajax печатает вывод PERL скрипт - Проблемы с IE7
var xmlhttp;
var result;
function load()
{
xmlhttp=null;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=state_Change;
xmlhttp.open("GET",getLauncherPath,true);
xmlhttp.send(null);
}
function state_Change()
{
if (xmlhttp.readyState==3){
if (xmlhttp.status==200){
result = "readyState = 3, counting begins\n";
result += xmlhttp.responseText;
document.getElementById('T1').innerHTML= result;
}
}
if (xmlhttp.readyState==4){
// 4 = "loaded"
if (xmlhttp.status==200)
{// 200 = "OK"
document.getElementById('T1').innerHTML= result + "\nreadyState = 4, DONE";
}
}
}
Вот мой Perl код
#!C:/perl/bin/perl.exe
use strict;
use warnings;
use CGI;
$|++;
my $cgi = CGI->new;
print $cgi->header,
$cgi->start_html("Output Flush Buffer Test");
for (1..3) {
print $cgi->p("Line $_");
sleep 1;
}
print $cgi->end_html;
Результат показывает в IE7
undefined readyState = 4, DONE
Результат в Firefox
readyState = 3, counting begins
Line 1
Line 2
Line 3
readyState = 4, DONE
У меня есть совет, что IE7 не поддерживает MIME, поэтому IE7 не может очистить вывод, используя изменение состояния, это правда? Если я запустил этот скрипт perl непосредственно из моего браузера IE7, например. localhost/cgi-bin/count.pl, IE7 показывает результаты по строкам с задержкой по времени. Он просто не работает с AJAX.
Пожалуйста, помогите мне с этой проблемой или предложите мне лучший способ сделать это.
Проверьте текст ответа в том же блоке, на котором вы печатаете readyState 4. –