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。
請有人幫我解決這個問題,或者建議我一個更好的方法來做到這一點。
檢查您打印readyState 4的同一個塊中的響應文本。 – 2010-02-11 16:41:05