인터넷 검색을 위해 회사 검색 시간을 최소 반나절 낭비했습니다. 여기에 답변을 드리겠습니다. 모든 다른 기술 선택 (긴 폴링, 아약스 스트리밍, 혜성, XMPP 등)의 차이를 이해할 수 없으며 PC에서 간단한 hello world 예제를 사용할 수 없습니다.웹 브라우저 로딩 페이지를 보내고 얼마 후에 결과 페이지
저는 Apache 2.2 및 ActivePerl 5.10.0을 실행하고 있습니다. JavaScript는이 솔루션에서 완전히 수용 가능합니다. 내가 원하는 것은 간단한 Perl CGI 스크립트를 작성하여 액세스 할 때 사용자에게 기다리거나 어쩌면 애니메이션 GIF를 보내는 일부 HTML을 반환하는 것입니다. 그런 다음 어떤 사용자 개입도없이 (마우스 클릭이나 기타없이) 나는 CGI 스크립트가 잠시 후 대기 메시지 또는 애니메이션 GIF를 쿼리의 실제 결과로 바꾸기를 원합니다.
나는 이것이 JavaScript를 사용하여 항상 간단한 작업을 수행한다는 것을 알고 있지만 Perl에서 작동 할 내 컴퓨터에 잘라 붙여 넣을 수있는 단일 작업 예제를 찾을 수 없습니다.
다음은 다양한 인터넷 소스에서 컴파일 한 간단한 Hello World 예입니다. 그러나 작동하지 않는 것 같습니다. 웹 브라우저에서이 Perl CGI 스크립트를 새로 고침하면 5 초 동안 아무것도 인쇄되지 않고 PLEASE BE PENTENT 웹 페이지가 인쇄되지만 결과 웹 페이지는 인쇄되지 않습니다. 따라서 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";
좋습니다. 솔루션을 가져 주셔서 감사합니다! 아무도 Ajax 솔루션으로 응답하지 않으면이 솔루션을 사용할 것이다. 이점은 브라우저에서 전체 웹 페이지를 보내고 새로 고치지 않고 웹 페이지의 결과 섹션을 새로 고치는 것입니다. –
메타 리디렉션 솔루션의 또 다른 단점은 웹 브라우저의 쿼리 문자열로 URL을 혼잡하게 만드는 것입니다.이 URL에서는 Ajax 솔루션이 웹 페이지의 섹션을 업데이트 할 때 URL을 실제로 변경하지 않는다고 생각합니다. –
jQuery를 사용하여 Ajax 예제를 추가했습니다. – friedo