2012-10-25 199 views
0

我想從我的HTML頁面調用perl腳本。我試圖做的方式是調用位於服務器上的perl腳本的url。從html傳遞變量到perl腳本

下面是一段代碼:

HTML:

var fname = "Bob"; 
var url='http://xxx.com:30000/cgi-bin/abc.pl?title=fname'; 
window.open(url,"_self");      

的方式我試圖在Perl作爲檢索它:

的Perl:

print "$ARGV[0]\n"; 

現在,我有3個問題:

  1. 我認爲這是傳遞變量的正確方法,但無法在perl中打印參數。
  2. 如果我想傳遞另一個變量lname,我該如何將它追加到URL?
  3. 我的window.open應該在同一個窗口中打開輸出,因爲它使用參數_self。它仍然沒有。

有人能指出問題嗎?

感謝, 巴茲

+1

不是真的HTML。你有一個Perl和Javascript的問題:你應該分解它們。 – Matteo

回答

4

沒有@ARGV包含命令行參數,將是空的。

您需要CGI模塊

use warnings; 
use strict; 

use CGI; 
my $query = CGI->new; 
print $query->param('title'); 

編輯: 看看dan1111對如何生成HTML並在瀏覽器中顯示它的答案。

+0

謝謝,你說得對。我使用錯誤的方式捕捉參數。你能幫我解決其他兩個問題嗎? – BuzzLightYear

+0

沒有反對票反對,但評論將有助於知道什麼是錯的... – Matteo

3

除了Matteo所說的之外,簡單的print聲明還不足以將一些輸出發送到瀏覽器。

請參閱a recent answer I wrote給出一個帶輸出的示例CGI腳本。

至於你的其他問題:

變量追加到&分開的網址:

var url='http://xxx.com:30000/cgi-bin/abc.pl?title=fname&description=blah'; 

基於this question,也許你應該試試window.location.href = url;代替(儘管這並不能解釋爲什麼你的代碼不工作)。

+0

是的,我明白這一點。只是想讓知道如何試圖找到參數值。能夠從我的perl腳本的結果輸出html。 – BuzzLightYear

+0

dan111 - 感謝您添加參數的方式。 – BuzzLightYear

+0

dan111 - 代碼window.location.href = url;奇怪的是不執行在Firefox中。該JavaScript本身does not工作 – BuzzLightYear

1

有兩種不同的環境,每種環境都以兩種不同的方式傳遞變量。命令行可以通過@ARGV傳遞變量,瀏覽器可以通過@ENV傳遞變量。不管你使用什麼語言,那些是你將不得不使用的數組。