人に聞けない痔の悩み、これでスッキリ >>

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"

このQ&Aに関連する最新のQ&A

A 回答 (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');";
みたいにして吐き出す必要があります。
    • good
    • 0
この回答へのお礼

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

なるほど、外部実行したcgi側の出力は
javascriptの形態にしなければならないのですね。
よく理解できました。
ありがとうございます。

お礼日時:2006/11/08 15:32

# 1です


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

# iframeを使えば静的ページにどんどん動的ページを貼付ける事が出来ます(見た目的に)。frameで呼び出しているだけ、と言えば元も子もありませんが。。。
    • good
    • 0
この回答へのお礼

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

iframeで完結することが出来ると思いますので、
こちらも良い実現方法ですね。
貴重なコメントありがとうございました。

お礼日時:2006/11/08 15:35

いわゆるAJAX的(リッチコンテンツ、)な表示法を考えてらっしゃるようですが、セキュリティの関係でJavaScriptの仕様上、外部サーバへの接続(XMLHTTPRequest)は出来ない事になっています。


ですが、全く似たような事が出来ない訳ではなく、疑似表示法としてフレームやiframeを使えば表示可能かと思います。
それ以外の方法としては、Flashを使えば外部サーバとのやり取りも可能です(外部サーバはドメイン指定)。Flashはアニメや音声だけでなく、このような使い方も可能です。

参考まで。
    • good
    • 0
この回答へのお礼

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

私がやりたいことをもう少し具体的にお話したいと思います。
「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 …
</SCRIPT>

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

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

質問ばかりで申し訳ございませんが、よろしくお願い致します。

お礼日時:2006/11/08 12:35

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QCGIの中で出力するテキスト内容をhtml側で表示する方法。

htmlからCGIファイルを呼び出すと、そのCGIは動作はしているようですが、
print等でhtml形式で文字出力させている部分は、ブラウザ内に表示されません。
今やって失敗している方法です。どのようにするのが良いか教えて頂ければ幸いです。

1.CGIスクリプト(Perlで記述)を用意... test.cgi
-----------------------------------------------------
#!/usr/bin/perl
print "Content-type:text/html; charset=shift_jis\n\n";
print <<__EOD;
<html lang="ja">
<head>
<title>TITLE</title>
</head>
<div align=center>
<a>テスト1</a><br>
<a>テスト2</a><br>
</div><br>
</body></html>
__EOD

open(OUT,">a.tmp") || die "$!";
print OUT "aaaaa\n";
close(OUT);
-----------------------------------------------------


2.htmlを用意 ... test.html
-----------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>HTML TEST</title>
</head>
<body>
<script src="http://xxx/CGI/test.cgi"></script>
</body>
</html>
-----------------------------------------------------

上記のとき、動作として、

◆ブラウザからCGIのパス(http://svr1/CGI/test.cgi)に直接アクセスした場合、
「テスト1」「テスト2」の文字が表示され、a.tmpファイルも作成されている。

◆ブラウザからhtml(http://svr1/test.html)にアクセスした場合、ブラウザ画面は何も表示されない
(真っ白となる)が、a.tmpファイルは作成されている。

のようになってしまいます。

後者のようにして、htmlからCGIファイルを呼び出すと、そのCGIは動作はしているようですが、
print等でhtml形式で文字出力させている部分は、ブラウザ内に表示されません。

以上、よろしくお願い致します。

htmlからCGIファイルを呼び出すと、そのCGIは動作はしているようですが、
print等でhtml形式で文字出力させている部分は、ブラウザ内に表示されません。
今やって失敗している方法です。どのようにするのが良いか教えて頂ければ幸いです。

1.CGIスクリプト(Perlで記述)を用意... test.cgi
-----------------------------------------------------
#!/usr/bin/perl
print "Content-type:text/html; charset=shift_jis\n\n";
print <<__EOD;
<html lang="ja">
<head>
<title>TITLE</title>
</head>...続きを読む

Aベストアンサー

<script src="http://xxx/CGI/test.cgi"></script>としているなら
perlで出力するヘッダーは
print "Content-Type: application/x-javascript\n\n";
としないとならないでしょう。

perlではjavaScript構文を出力します。

例えばhtmlでは・・
<BODY>
<SCRIPT TYPE="Text/Javascript" LANGUAGE="Javascript">
<!--
document.write ("<SCRIPT TYPE=\"text/JavaScript\" SRC=\"test.cgi\"></SCRIPT>");
// -->
</SCRIPT>
</BODY>

として、perlでは

#!/usr/bin/perl
print "Content-Type: application/x-javascript\n\n";
print "document.write('<A HREF=\"other.html\">てすと</A>');";

てな感じです。

<script src="http://xxx/CGI/test.cgi"></script>としているなら
perlで出力するヘッダーは
print "Content-Type: application/x-javascript\n\n";
としないとならないでしょう。

perlではjavaScript構文を出力します。

例えばhtmlでは・・
<BODY>
<SCRIPT TYPE="Text/Javascript" LANGUAGE="Javascript">
<!--
document.write ("<SCRIPT TYPE=\"text/JavaScript\" SRC=\"test.cgi\"></SCRIPT>");
// -->
</SCRIPT>
</BODY>

として、perlでは

#!/usr/bin/perl
print "Content-Type: appli...続きを読む

QJavaScriptでCGIの呼出し・・・???

独学でプログラミングを始め、最近ではWeb系の勉強を始めました。
JavaScriptという言語とHTMLの勉強をしています。
そこで、どうしてもわからない事があります。
色々とネットで検索をしてみたのですが、私の理解力がないのか回答を見つけることができません。
どうか教えてください。

JavaScriptで他のサーバにあるCGIにデータを渡す方法です。

JavaScriptでHTMLの「Get」や「Post」のような機能があれば、できるのではないか、と考えたのですが、リファレンスを見ても、「Get」や「Post」はありませんでした。

JavaScriptにはそのような機能はないのでしょうか?
Ajaxという機能があるようなのですが、その機能を使うしか方法はないのでしょうか?
Ajaxも勉強したいと思っているので、方法があれば、ぜひ教えてください。

Aベストアンサー

> JavaScriptで他のサーバにあるCGIにデータを渡す方法です。
他のサーバーの同じドメインなのか、他のサーバーの別のドメインなのかで対処法は変わります。


別のドメインであればAjaxは使えません。(同じサーバーでも別のサーバーでも使えません)
DOMを使ってscriptエレメントを生成し、src属性にデータを付加して、ドキュメントに挿入するか(いわゆるJSONP)
<form>を使って送信する必要があります。
送信して終わり(受信なし)であれば、Imageオブジェクトのsrcプロパティかimgエレメントのsrc属性に付加することでも送信できます。
<form>のtargetをインラインフレームやopen()で開いたウインドウにしておけば、バックグラウンドで(非同期で)送信することもできます。(というか非同期を強制されます)

同一ドメインならAjax、JSONP、<form>、<img>のどれでも可能です。(同じサーバーでも別のサーバーでも使えます)

> JavaScriptでHTMLの「Get」や「Post」のような機能があれば、できるのではないか、と考えたのですが、リファレンスを見ても、「Get」や「Post」はありませんでした。
JavaScriptの前提知識としてHTMLの内容は必須ですので、そのようなことを解説しているリファレンスはないと思います。
三角関数を解説しているところで足し算やかけ算の仕方を解説しているところがないのと同じです。

HTMLのformの項目、およびCGIの受信処理に関しての項目に詳しく書かれていると思います。
(リファレンスによっては書かれていないこともあります)

> JavaScriptで他のサーバにあるCGIにデータを渡す方法です。
他のサーバーの同じドメインなのか、他のサーバーの別のドメインなのかで対処法は変わります。


別のドメインであればAjaxは使えません。(同じサーバーでも別のサーバーでも使えません)
DOMを使ってscriptエレメントを生成し、src属性にデータを付加して、ドキュメントに挿入するか(いわゆるJSONP)
<form>を使って送信する必要があります。
送信して終わり(受信なし)であれば、Imageオブジェクトのsrcプロパティかimgエレメントのsrc属...続きを読む

QCGIとJavascriptの違いについて

Javascriptの初心者です、宜しくお願いします。

CGIでは「クライアントがサーバーに処理要求を出してサーバーが処理をし、クライアントにhtmlを返す」。

Javascriptでは「クライアントがサーバーに処理要求を出すが、サーバーは処理をしないで、クライアントにhtmlを返してサーバーが処理をして、ブラウザが表示させる」
と本には書いています。

CGIの場合、(1)サーバーからクライアントに返すhtmlとは、具体的にはどのような内容のものでしょうか。htmlファイルという意味でしょうか。(2)またサーバーがする処理とはどのようなものでしょうか。

また、Javascriptの場合、(1)サーバーの役割とはどのようなものでしょうか、(2)サーバーから返されるhtmlとはどのようなものでしょうか、CGIと同じ内容なのでしょうか。(3)この時のブラウザの役割、作業はCGIとはどのように違うのでしょうか。

以上、宜しくお願いします。

Aベストアンサー

再びNo1です
他の回答者さんの回答も含めて大体分かってきたでしょうか?

>>JavaScriptだけで現在のwebシステムを構築することはかなり困難(ほぼ無理)です。
>とは具体的にどのような意味でしょうか、また、ここでの「webシステム」の構築とはどの程度のシステムのことを言われてるのでしょうか

たとえば、このQ&Aサイトも一部でJavaScriptを使っていますが、JavaScriptだけでは構築できません
他にも通販サイトや会員ログインが必要なサイトもJavaScriptだけではどうすることもできません


JavaScriptだけで構築できるサイトといえば計算系のサイトですかね
例えば、m(メートル)をinch(インチ)に換算するサイトとか
車のエンジン回転数やギヤ比、タイヤ外周などのデータから時速を計算するサイト
等はJavaScriptだけでも構築できます
また、サイト内で「現在○時○分」ですという表示がリアルタイムにカチカチと時計が動くような部分はJavaScriptが使われています(最近ではFlashの場合もありますけど)

ほかにもマウスの動きに合わせてハートマーク等のアイコンが追いかけてくるような飾りもJavaScriptで作られています。


こういったように、クライアントノード内で動作する必要がある場合はJavaScriptの出番です
例えば、時計などの場合はサーバーサイドスクリプトでは作ることは出来ません。


JavaScriptと他の言語との決定的な違いは、「パソコン内でのみ動作する」
ということです

JavaScriptを使ってサーバー側にデータを送りつける ということも可能ではあるのですが、送りつけるだけで終わりです
よく使われるテクニックとしては JavaScriptに <form>タグの Submitを肩代わりさせることをよくやります。
他にAjaxという概念を用いる場合も最近は増えてきていますが、これはJavaScriptが何なのかを理解してからでないと理解できない概念です



>また、いわゆる「スクリプト言語」の定義とはどのようなもので、どのような言語を指すのでしょうか?HTML、phpのことでしょうか。

HTMLは含まれません。
一般的に言う「プログラム言語」としては
・入力データがある
・処理をする
・出力をする
この3工程がない限り「プログラム言語」とは言いがたいものです
HTMLの場合、入力も処理も出力もしません
ブラウザが理解できるように記述された「マークアップ言語」です
ブラウザが理解できる唯一のものです。
ですから、サーバーサイドスクリプトが処理したあとに HTMLの形で出力しないかぎり、ブラウザには何も表示されません(text形式でも文字は表示されますけどね)


サーバーサイドスクリプトとして利用されている言語にはいくつかあります
質問にもありました PHPもその一種です
他にも
Perl、Java、C系、Rubyなど等 さまざまな言語を サーバーサイドスクリプト言語として利用しています。
(*注意:JavaとJavaScriptは別物だと理解してください)

再びNo1です
他の回答者さんの回答も含めて大体分かってきたでしょうか?

>>JavaScriptだけで現在のwebシステムを構築することはかなり困難(ほぼ無理)です。
>とは具体的にどのような意味でしょうか、また、ここでの「webシステム」の構築とはどの程度のシステムのことを言われてるのでしょうか

たとえば、このQ&Aサイトも一部でJavaScriptを使っていますが、JavaScriptだけでは構築できません
他にも通販サイトや会員ログインが必要なサイトもJavaScriptだけではどうすることもできません


Jav...続きを読む

Qjavascriptの中で、perlのコマンドを実行できないか。

javascriptの中で、perlのコマンドを実行できないか。

java:クライアント側の処理。
perl(cgi):サーバ側の処理。
なので、愚問かもしれないのですが、

↓======================================
<script language="JavaScript">
<!--
function aaa(){

 :

EOM

(この間に、perlの処理)

print <<EOM;



}
// -->
</script>
↑======================================

と言った感じで、javascriptのfuncitonの中で、
perlを使って、データベースへの操作をしたいのですが、
やはり、無理でしょうか。
あるいは、代案などあればご教授願えませんでしょうか。
よろしくお願いします。

Aベストアンサー

Sjaxを使う手もアリかと思います
昔作った実験コードです。
hello.cgiは自分で適当に作ってください
また、hello.cgiはべつにCGIでなくてもPHPでもOKです。
ロード時に実行するパターンとボタンクリックのイベント駆動のパターンを入れときました。
なんかずっと前にもこんな質問があったような気が・・・
--------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>サンプル</title>
<script language="javascript">
<!--
// -------------------------------------
// -------------------------------------
function fCall(){
var xObj = createHTTPRequest();
var fName = "http://www.hogehoge.jp/hello.cgi";
var oText = document.getElementById("Disp01");
xObj.open("GET", fName, false);
xObj.send(null);
oText.innerHTML = xObj.responseText;
}

function fCall2(){
var xObj = createHTTPRequest();
var fName = "http://www.hogehoge.jp/hello.cgi";
xObj.open("GET", fName, false);
xObj.send(null);
var sSTR = xObj.responseText;
document.write(sSTR);
}
// -------------------------------------
function createHTTPRequest(){
if(window.ActiveXObject && !window.XMLHttpRequest){
try{
return (new ActiveXObject('Msxml2.XMLHTTP'));
}catch (e) {}
try{
retrurn (new ActiveXObject('Microsoft.XMLHTTP'));
}catch (e) {}
return (null);
}else if(window.XMLHttpRequest){
return (new XMLHttpRequest);
}else{
return null;
}
}
//-->
</script>

</head>
<body>
<p>サンプル</p>
<p id="Disp01"> </p>
<p><input type="button" value="ボタン" name="B3" onClick="fCall()"></p>
<script language="javascript">
<!--
fCall2();
//-->
</script>
</body>
</html>
--------------------------------------------------------

Sjaxを使う手もアリかと思います
昔作った実験コードです。
hello.cgiは自分で適当に作ってください
また、hello.cgiはべつにCGIでなくてもPHPでもOKです。
ロード時に実行するパターンとボタンクリックのイベント駆動のパターンを入れときました。
なんかずっと前にもこんな質問があったような気が・・・
--------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<tit...続きを読む

Qhtmlファイルへのcgiの組み込みについて

gifファイルなどはcgiで<img>タグによってhtmlファイルに埋め込むことはできますが,cgiから出力されるtxtをhtmlに埋め込むことはできますか?
すべてをcgiでやれば済むことですが,もし方法があれば教えてください.
フレームを使用すればできると思いますが,できたら使用しない方法をお願いします.

Aベストアンサー

> html側ではperlで作成されたcgiではなくjavascriptで作成されたcgiですよね?
Perlで作られたCGIです。(一般にCGIがそうであるように、スクリプトの言語はPerlでなくてもかまいませんが。)

>perlとjavascriptが混在しているように見える
これはPerlです。
サーバ側からテキストとして'document.~'を出力しています。
受取ったブラウザは外部Javascriptとして読み込んでいるのでそのテキストをJavascriptとして処理します。

混乱させてしまったようですが、CGIというのはHTMLやIMGだけを返すためにあるわけではないということです。

前回書き忘れましたがヘッダーも
Content-type: text/html
ではなく
Content-type: application/x-javascript
とする必要があります。

あと、#1に補足ですがexecコマンドが禁止されていてもincludeでCGIを呼び出すこともできます。
SSI自体禁止されている場合も多いのですが。とにかくSSIが使えるならSSIを使うことをお勧めします。

> html側ではperlで作成されたcgiではなくjavascriptで作成されたcgiですよね?
Perlで作られたCGIです。(一般にCGIがそうであるように、スクリプトの言語はPerlでなくてもかまいませんが。)

>perlとjavascriptが混在しているように見える
これはPerlです。
サーバ側からテキストとして'document.~'を出力しています。
受取ったブラウザは外部Javascriptとして読み込んでいるのでそのテキストをJavascriptとして処理します。

混乱させてしまったようですが、CGIというのはHTMLやIMGだけを返すために...続きを読む

QjQuery,Ajaxでcgiに接続する方法がわからなくて困っています

jQuery,Ajaxでcgiに接続する方法がわからなくて困っています。
あるデータベースのあるテーブル(仮にpersonテーブル)を参照して、html上のformタグに文字を入れるとselectボックス内に表示されるものがマッチしたものが表示されるようなものを作りたいと思っています。

例えば、
personテーブルのperson_nameカラムには(秋本、本田、寺西、寺本、戸田、吉岡)という情報が入っていて、selectボックス内は最初全ての人名が出ているとします。
person.htmlというテンプレートのformのところに【寺】と入力するとselectボックス内は寺西と寺本だけ表示される。

そのようなものを作りたいと思っていますがうまくいきません。何か参考になるURLだけでもかまいませんのでご教授下さい。
できればサンプルソースがあればうれしです。

Aベストアンサー

とりあえずjQueryのサンプルです。
(cgiがperlでなくPHPで申し訳ない)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja-JP">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript" charset="utf-8" src="/jslib/jquery-1.4.2.min.js"></script>
<script type="text/javascript" charset="utf-8">
<!--
$(function(){
$("#search_name").keyup(function(){
if(!$(this).val()) return false;
console.log($(this).val());
$.ajax({
type: "POST",url:"/hogehoge.php?",dataType:"json",
data:{"search_name":$(this).val()},
success:function(data){
$('#person').empty();
for(var i=0;i<data.length;i++){
var option=$("<option>");
option.val(data[i]);
option.text(data[i]);
$('#person').append(option);
}
},
error:function(XMLHttpRequest,status,errorThrown){
alert(XMLHttpRequest.url + ":"+ status);
}
});
});
});
// -->
</script>
<body>
<body>
<form>
<input id="search_name" type="text" value="">
</form>
<select name="person" id="person">
<option value="秋本">秋本<option value="本田">本田<option value="寺西">寺西
<option value="寺本">寺本<option value="戸田">戸田<option value="吉岡">吉岡
</select>
</body>
</html>

cgi(PHP)側のサンプル
<?php
header("Content-type:text/javascript");
mb_language("japanese");
mb_internal_encoding("UTF-8");
mb_http_output("UTF-8");
if(isset($_POST['search_name'])){
/*
ここにDB検索処理を記述
「$_POST['search_name']をキーにして読み込んだデータを
配列変数$dataに格納する。」
*/
$data= array("寺西","寺本"); //テスト用サンプル
echo json_encode($data);
}
?>

とりあえずjQueryのサンプルです。
(cgiがperlでなくPHPで申し訳ない)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja-JP">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript" charset="utf-8" src="/jslib/jquery-1.4.2.min.js"></script>
<script type="text/javascript" chars...続きを読む

Qhtmlからテキストを返すperlを実行する方法

アクセスカウンターの数字画像を出力するperlのcgiを、<img>タグで、

<img src="./counter.cgi">

と、呼び出す方法があると思いますが、これと同じように、画像ではなくテキストを出力するperlのcgiをhtml中に呼び出して、ブラウザに表示する方法はないでしょうか?

以下のような感じかと漠然と思ったのですが、やはり上手くいくはずはありませんでした。

■cgiプログラム(test.cgi)
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print "TEST TEXT";
exit 0;

■htmlファイル
<html><head></head>
<body>
<br>
<hr>
<object data="./test.cgi" type="text/plain"></object>
<hr>
</body>
</html>

perlもhtmlも独学で学んだ基礎レベルだと自分で思っています。
どなたか突破口となるヒントをお願いします。

アクセスカウンターの数字画像を出力するperlのcgiを、<img>タグで、

<img src="./counter.cgi">

と、呼び出す方法があると思いますが、これと同じように、画像ではなくテキストを出力するperlのcgiをhtml中に呼び出して、ブラウザに表示する方法はないでしょうか?

以下のような感じかと漠然と思ったのですが、やはり上手くいくはずはありませんでした。

■cgiプログラム(test.cgi)
#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print "TEST TEXT";
exit 0;

■htmlファイル
<html>...続きを読む

Aベストアンサー

cgi側でjavascriptのコードを返すという方法があります。

■cgiプログラム(test.cgi)
print "Content-type: text/plain\n\n";
print "javascriptのコード";

■htmlファイル
<script type="text/javascript" src="http://サクラ/test.cgi">

テキストニュースも大抵この方式でしょう。
いわいるブログペットも、画像かIFrameかJavascriptで出来ているはずです。

Qhtml上で、バッチやexeファイルの起動をしたい

わけあって、学校(養護学校)初心者向けにhtmlでメニューを作っています。
さて、スタートボタンやディスクトップにショートカットを使わず、htmlの中からバッチファイルやexeファイルを起動できるでしょうか?

もし可能ならば、教えてください。OSはWindows XPで起動したいファイルはexeファイルとバッチファイルです。
よろしくお願いします。

Aベストアンサー

<html><head></head>
<body>
<a href="file:///c:/windows/system32/calc.exe">電卓</a>
</body>
</html>

QJavaScriptでcgiの戻り値を受け取るには?

JavaScriptの関数内でcgiを実行(submit)しています。
そのcgiの実行結果(cgiで記述しているexit 0などの0)を受け取る方法を教えてください。

受け取った値によって、alertでメッセージを表示させたいです。
cgiの実行からalertでメッセージを表示させるまでの処理を
JavaScriptの1つの関数内で行いたいです。

よろしくお願いいたします。

Aベストアンサー

いわゆる「Ajax」で調べてみてください。
一般的には非同期通信を行いますが、同期通信なら1つの関数内で出来ます。
「ajax 同期通信」「ajax 同期モード」こんな感じのキーワードでいいと思います。
サンプルは検索すれば何種類か出てくると思いますのでそれを見てください。
(種類が少ないのは、他に書き方がないため。使用しているライブラリの違い。)

ただし、exit 0の0を受け取ることは出来ません。
これはCGIアプリケーションからOSに返される値であり、クライアントへは返されません。(CGIアプリケーションにとっての標準出力から出力されません。)
これをJavaScriptで受け取るには、CGIアプリケーションがexit 0する前にそれと同じ値を標準出力に出力する必要があります。

以下、PerlのCGIスクリプトの例(exit部分)

if($isError){
print '1';
exit 1;
}
print '0';
exit 0;

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。


人気Q&Aランキング