• ベストアンサー
  • すぐに回答を!

HTML上(javascript)からCGIを実行する方法

  • 質問No.2525157
  • 閲覧数6178
  • ありがとう数5
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 74% (120/162)

javascriptから外部実行ファイル(javascriptファイルではなくperlなどのCGI)
を実行する方法を探しています。
下記のようにindex.htmとtest.cgiファイルを用意して、index.htm内の
javascriptから外部cgiを実行させ、cgiの結果(test.cgiでは単に
『test』と表示するのみ)を表示したいと考えています。

利用増ですが、cgiやssiが使用できないサーバにindex.htmを置いて、
cgiが使用できるサーバ上のcgi結果を取得したいものです。
通常のcgiのように、1ページでcgi結果を表示するものではなく、
HTMLファイルの一部にcgi処理結果を表示させたいものです。

そもそも、SSIを使用しなければ下記のようなHTML内にcgiなどの
実行結果を表示する事は出来ないのでしょうか。
よろしくお願い致します。

※下例のプログラムではcgi結果は表示されませんでした・・・。

---<index.htm>----------------------------------------
<HTML>
<BODY>
<SCRIPT language="Javascript" src="http://xxx.xxx.xxx.xxx/test.cgi"></SCRIPT>
</BODY>
</HTML>

---<test.cgi>----------------------------------------
#!/usr/bin/perl

print "test"

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー

ベストアンサー率 66% (1052/1578)

「Google AdSense」のjavascriptでは#1さんの回答にもありますがiframeを使用するような仕掛けになっているようです。
・javascriptでiframeを展開。
・iframeのsrcでcgiを指定。

>外部cgiでjavascriptを生成する仕組みを作り、その生成されたjavascriptを参照するという間接的な仕組みを設ければ可能になる
そういう仕組みも可能です。
また、直接的に<script type="text/javascript" src="xxxx.cgi"></script>
こういう書き方も可能です。
※xxxx.cgiでは処理結果をjavascriptのコードとして
print "Content-Type: application/x-javascript\n\n";
print "document.write('xxxx');";
みたいにして吐き出す必要があります。
お礼コメント
mmei

お礼率 74% (120/162)

コメントありがとうございます。

なるほど、外部実行したcgi側の出力は
javascriptの形態にしなければならないのですね。
よく理解できました。
ありがとうございます。
投稿日時:2006/11/08 15:32

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 58% (450/773)

# 1です
> これを直接cgiにすることは不可能で、javascriptなら可能ということなのでしょうか。
諸々の操作がiframeの中で完結するのでしたら、javascriptを経由する必要はありません。即ち、
<iframe src="http://hogehoge.com/cgi?a=zzzz&b=cccc=..."></iframe>
としておけば良い訳です。

# iframeを使えば静的ページにどんどん動的ページを貼付ける事が出来ます(見た目的に)。frameで呼び出しているだけ、と言えば元も子もありませんが。。。
お礼コメント
mmei

お礼率 74% (120/162)

度々のコメントありがとうございます。

iframeで完結することが出来ると思いますので、
こちらも良い実現方法ですね。
貴重なコメントありがとうございました。
投稿日時:2006/11/08 15:35
  • 回答No.1

ベストアンサー率 58% (450/773)

いわゆるAJAX的(リッチコンテンツ、)な表示法を考えてらっしゃるようですが、セキュリティの関係でJavaScriptの仕様上、外部サーバへの接続(XMLHTTPRequest)は出来ない事になっています。
ですが、全く似たような事が出来ない訳ではなく、疑似表示法としてフレームやiframeを使えば表示可能かと思います。
それ以外の方法としては、Flashを使えば外部サーバとのやり取りも可能です(外部サーバはドメイン指定)。Flashはアニメや音声だけでなく、このような使い方も可能です。

参考まで。
お礼コメント
mmei

お礼率 74% (120/162)

早速のコメントありがとうございました。

私がやりたいことをもう少し具体的にお話したいと思います。
「Google AdSense」というアフィリエイトがあります。
それは、自分のHTMLページに、指定されたjavascriptを貼り付けるだけで
貼り付けた部分に、Google AdSenseの処理結果が表示されるものです。
私も同様な構造の仕組を作りたいと思いました。
下記に、自分のHTMLページに貼り付けるGoogle AdSenseから
指定されたサンプルスクリプトを引用いたします。

<script type="text/javascript"><!--
google_ad_client = "XXX";
google_ad_width = XXX;
google_ad_height = XXX;
google_ad_format = "XXX";
google_ad_type = "text";
google_ad_channel ="";
//--></script>
<SCRIPT type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</SCRIPT>

上記スクリプトを自分のHTMLへ貼り付けることで、外部で処理された結果が
自分のHTML内に表示されるものなのですが、これは簡単に出来ないものなのでしょうか。

上記スクリプトでは、外部のjavascript(show_ads.js)を指定しているようなのですが、
これを直接cgiにすることは不可能で、javascriptなら可能ということなのでしょうか。
そうであれば、外部cgiでjavascriptを生成する仕組みを作り、その生成されたjavascriptを参照するという
間接的な仕組みを設ければ可能になるのでしょうか。

質問ばかりで申し訳ございませんが、よろしくお願い致します。
投稿日時:2006/11/08 12:35
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ