Ajax打印perl脚本的输出 - IE7的问题

时间:2010-02-11 16:36:34

标签: ajax perl internet-explorer-7

这是我的javascript代码:

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脚本,例如localhost / cgi-bin / count.pl,IE7通过时间延迟逐行显示结果。它只是不适用于AJAX。

请有人帮我解决这个问题,或者建议我更好的方法来做这件事。

1 个答案:

答案 0 :(得分:0)

在IE7中有另一种刷新输出的方法,我讨厌这样做 1. stdout输出到perl的日志文件中 2.当ajax启动呼叫计数时,将有另一个javascript来调用日志文件并在屏幕上打印文本。