2014-02-26 2 views
2

javascript에서 perl 스크립트를 호출하고 싶습니다. 나는이 사용하는 AJAX를 시도 :AJAX를 사용하여 자바 스크립트에서 Perl 스크립트를 호출하십시오.

function create_request(obj) { 
    var req = \"id=\"+0; 
    var req_http =new XMLHttpRequest(); 
    req_http.open(\"POST\", \"create_file.pl\", false); 
    req_http.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\"); 
    req_http.send(req); 
    req_http.onreadystatechange = function() { 
    if (req_http.readyState == 4) { 
    var resp=req_http.responseText; 
    document.write(resp); // *** echoes the content of create_file.pl 
    } 
    } 
} 

create_file.pl : 펄 스크립트는 텍스트 파일을 만듭니다

#!/usr/bin/perl 
# 
# 
use strict; 
use warnings; 
use CGI; 

my $cgi = CGI->new; 

open FILE, ">>file.txt" or die $!; 
print FILE "aaa"; 
close(FILE); 

print $cgi->header('text/plain;charset=UTF-8'); 
print 0; 

.

javascript가 perl 스크립트를 호출 한 후 반환 된 결과는 create_file.pl의 전체 내용이고 file.txt 파일은 만들어지지 않습니다.

+2

완전히 AJAX를 무시하면 웹 브라우저에서 perl 스크립트를 호출하면 어떻게됩니까? –

답변

2

은 (자바 스크립트가 당신이 당신의 AJAX 호출에서 반환 펄 파일의 내용을 얻는 경우

, 이것이 의미하는 것은 웹 서버가 펄을 처리하도록 구성되지 않은 것입니다 AJAX 함께 할 수 없다 위치에 올바르게 액세스하거나 404가 표시됨).

이 작업을 수행하는 방법은 서버를 알지 못해도 말하기 어렵습니다. 일반적으로 CGI 처리기에 파일을 요청하여 .pl 개를 전달하는 규칙을 설정해야합니다. lighttpd를에서

(내가 무엇을 사용), 그건 : 당신이 lighttpd를 사용하지 않을 경우

$HTTP["url"] =~ "/cgi-bin/" { 
     cgi.assign = (".pl" => "/usr/bin/perl") 
} 

, 내가 통해 해당 파일을 구문 분석하도록 구성 지침에 your-server cgi에 대한 구글을 복용하고 다음 좋을 것 펄

2

javascript가 perl 스크립트를 호출 한 후 반환 된 결과는 create_file.pl의 전체 내용이고 file.txt 파일은 만들어지지 않습니다.

다음 중 하나 : 당신은 대신에 웹 서버를 통해 로컬 파일 시스템에서 작업하는

  • 또는
  • 당신은 대신의 CGI와 펄 프로그램을 치료하기 위해 서버를 구성하지 않은
  • 정적 파일.
1

웹 서버에서 Perl 스크립트의 텍스트를 받았을 때 웹 서버가 스크립트를 실행하기를 기대했다면, 웹 서버가 잘못 구성되었습니다.

파일을 실행하도록 웹 서버를 구성해야합니다.

일반적으로 하나는 실행 파일을 정적 콘텐츠와 구분합니다. 그런 다음 실행 파일 디렉토리에서 프로그램 실행을 허용하도록 웹 서버를 구성합니다. 해당 구성의 정확한 구문은 실행중인 웹 서버에 따라 다릅니다.

관련 문제