2010-02-11 29 views
1

這裏是我的javascript代碼:阿賈克斯打印從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無法使用狀態更改刷新輸出的原因,這是真的嗎?如果我直接從IE7瀏覽器運行這個perl腳本,例如本地主機/ cgi-bin/count.pl,IE7將逐行顯示結果並延時。它只是不適用於AJAX。

請有人幫我解決這個問題,或者建議我一個更好的方法來做到這一點。

+0

檢查您打印readyState 4的同一個塊中的響應文本。 – 2010-02-11 16:41:05

回答

0

有刷新在IE7的輸出,我討厭做 1.標準輸出輸出到在Perl 2.一個日誌文件,當阿賈克斯開始調用次數,就會有另一個JavaScript調用日誌文件的替代方式在屏幕上打印文本。