- ベストアンサー
HTML上(javascript)からCGIを実行する方法
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"
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「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');"; みたいにして吐き出す必要があります。
その他の回答 (2)
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
# 1です > これを直接cgiにすることは不可能で、javascriptなら可能ということなのでしょうか。 諸々の操作がiframeの中で完結するのでしたら、javascriptを経由する必要はありません。即ち、 <iframe src="http://hogehoge.com/cgi?a=zzzz&b=cccc=..."></iframe> としておけば良い訳です。 # iframeを使えば静的ページにどんどん動的ページを貼付ける事が出来ます(見た目的に)。frameで呼び出しているだけ、と言えば元も子もありませんが。。。
お礼
度々のコメントありがとうございます。 iframeで完結することが出来ると思いますので、 こちらも良い実現方法ですね。 貴重なコメントありがとうございました。
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
いわゆるAJAX的(リッチコンテンツ、)な表示法を考えてらっしゃるようですが、セキュリティの関係でJavaScriptの仕様上、外部サーバへの接続(XMLHTTPRequest)は出来ない事になっています。 ですが、全く似たような事が出来ない訳ではなく、疑似表示法としてフレームやiframeを使えば表示可能かと思います。 それ以外の方法としては、Flashを使えば外部サーバとのやり取りも可能です(外部サーバはドメイン指定)。Flashはアニメや音声だけでなく、このような使い方も可能です。 参考まで。
お礼
早速のコメントありがとうございました。 私がやりたいことをもう少し具体的にお話したいと思います。 「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を参照するという 間接的な仕組みを設ければ可能になるのでしょうか。 質問ばかりで申し訳ございませんが、よろしくお願い致します。
お礼
コメントありがとうございます。 なるほど、外部実行したcgi側の出力は javascriptの形態にしなければならないのですね。 よく理解できました。 ありがとうございます。