2010-02-11 3 views
1

Вот мой 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.

Пожалуйста, помогите мне с этой проблемой или предложите мне лучший способ сделать это.

+0

Проверьте текст ответа в том же блоке, на котором вы печатаете readyState 4. –

ответ

0

Существует альтернативный способ очистить выход в IE7, которые я ненавижу делать вывод 1. стандартный вывод в лог-файл в Perl 2. Когда Ajax начинается подсчет вызовов, будет другой Javascript, чтобы вызвать файл журнала и напечатайте текст на экране.

Смежные вопросы