Я потратил, по крайней мере, полдня времени моей компании, ища ответ в Интернете, и меня тут затягивает ось.Я не могу понять разницу между различными технологиями (длинный опрос, потоковая передача ajax, комета, XMPP и т. Д.), И я не могу получить простой пример "Hello World", работающий на моем ПК.
Я использую Apache 2.2 и ActivePerl 5.10.0.JavaScript полностью приемлем для этого решения.Все, что я хочу сделать, это написать простой CGI-скрипт на Perl, который при обращении к нему сразу возвращает HTML, который говорит пользователю подождать или, возможно, отправляет анимированный GIF.Затем без какого-либо вмешательства пользователя (без щелчков мышью или чего-либо еще) я хочу, чтобы через некоторое время сценарий CGI заменил сообщение ожидания или анимированный GIF фактическими результатами их запроса.
Я знаю, что это простои веб-сайты делают это все время, используя JavaScript, но я не могу найти ни одного рабочего примера, который я мог бы вырезать и вставить на свой компьютер, который будет работать в Perl.
Вот мой простой пример Hello World, который я собрал из различных интернет-источников, но, похоже, он не работает.Когда я обновляю этот скрипт Perl CGI в моем веб-браузере, он ничего не печатает в течение 5 секунд, затем он печатает веб-страницу PLEASE BE PATIENT, но не веб-страницу результатов.Таким образом, Ajax XMLHttpRequest явно не работает правильно.Что я делаю не так?
#!C:\Perl\bin\perl.exe
use CGI;
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
sub Create_HTML {
my $html = <<EOHTML;
<html>
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="expires" content="-1" />
<script type="text/javascript" >
var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp=false;
}
}
if (!xmlhttp && window.createRequest) {
try {
xmlhttp = window.createRequest();
} catch (e) {
xmlhttp=false;
}
}
</script>
<title>Ajax Streaming Connection Demo</title>
</head>
<body>
Some header text.
<p>
<div id="response">PLEASE BE PATIENT</div>
<p>
Some footer text.
</body>
</html>
EOHTML
return $html;
}
my $cgi = new CGI;
print $cgi->header;
print Create_HTML();
sleep(5);
print "<script type=\"text/javascript\">\n";
print "\$('response').innerHTML = 'Here are your results!';\n";
print "</script>\n";