Ajax печатает вывод из сценария Perl - проблемы с IE7 - PullRequest
1 голос
/ 11 февраля 2010

Вот мой код 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 не может сбросить вывод с помощью изменения состояния, это правда? Если я запускаю этот Perl-скрипт прямо из браузера IE7, например, localhost / cgi-bin / count.pl, IE7 фактически показывает результаты построчно с временной задержкой. Он просто не работает с AJAX.

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

1 Ответ

0 голосов
/ 11 февраля 2010

Есть альтернативный способ очистки вывода в IE7, который я ненавижу делать 1. вывод stdout в файл журнала в perl 2. Когда ajax начнет подсчет вызовов, появится еще один javascript для вызова файла журнала и печати текста на экране.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...