自分がやりたいことですが、あるURLに存在する情報をゲットしたいのではありません。
あるURL上のボタンを押すとRubyで作ったCGIが動くようにしたのですが、いまのままだと○○.cgiの画面になってしまいます。
そうではなくて、そのCGIの処理が終わったあとは、元のURLの画面に戻りたいのです。
Rubyのバージョンはわかりません。すみません。ですがそれほど古くはないと思います。
よろしくお願いいたします。
rubyの関数ではないのですが、
Ajaxと併用してはいかがでしょうか?
例えば、
<a href="..." onClick="Javascript:clickFunc();">...</a>
<script type="text/javascript">
function clickFunc(){
httpObj = new XMLHttpRequest();
httpObj.open("GET","sample.rb",true);
httpObj.send(null);
などなど・・・
}
</script>
のようにします。
リンクをクリックするとclickFuncが呼ばれ、sample.rbにアクセスします。
それで、sample.rbがなんか行って、返り値が(あれば)帰ってきます。
元に戻るというよりは、元のページにいながらcgiを動作させる、という感じです。
参考サイト
http://www.openspc2.org/JavaScript/Ajax/Ajax_study/index.html
rubyの関数ではないのですが、
Ajaxと併用してはいかがでしょうか?
例えば、
<a href="..." onClick="Javascript:clickFunc();">...</a>
<script type="text/javascript">
function clickFunc(){
httpObj = new XMLHttpRequest();
httpObj.open("GET","sample.rb",true);
httpObj.send(null);
などなど・・・
}
</script>
のようにします。
リンクをクリックするとclickFuncが呼ばれ、sample.rbにアクセスします。
それで、sample.rbがなんか行って、返り値が(あれば)帰ってきます。
元に戻るというよりは、元のページにいながらcgiを動作させる、という感じです。
参考サイト
http://www.openspc2.org/JavaScript/Ajax/Ajax_study/index.html
mponto様、ありがとうございます。これで試してみます。
うまくいったらまたご報告いたします。
このテの質問をするならば、サンプルとなるサイトを用意して、どのようなことをやってどんな結果を望んでいるのかを明確にしてください。
具体的なURLがないから正しい意図はつかめないし、動くコードを書くこともできません。
あせらずに質問文を見直してください。冒頭に「Rubyで指定したあるURLに飛ぶ命令を教えてください。」ではあるURLに存在する情報をゲットするとしか読めません。
WWW::Mechanizeは機械化されたブラウザで、ブラウザでできる処理を自動化できます。ただし、JavaScriptは対応していません。
http://d.hatena.ne.jp/kitamomonga/ がとても詳しいです。
RubyのバージョンはCGIスクリプトで調べられます。
#!/usr/local/bin/ruby print "Content-Type: text/plain\r\n\r\nRUBY_VERSION=#{RUBY_VERSION}\r\n"
rubikitch様、ありがとうございます。了解です。
ところで
>>サンプルとなるサイトを用意して、どのようなことをやってどんな結果を望んでいるのかを明確にしてください
すみません、言いたいことはわかるのですが・・・自分も回答者だったらそう思うと思うのですが・・・
率直に言って、そんな手間をかけるくらいでしたら、もう少し自分で調べます。
今は時間の節約をしたいので、質問文がわかりにくかったらスルーして結構です。
Rubyのバージョンの調べ方については、ありがとうございます。参考になります!!
なお、いただいたサンプルコードで調べてみたところ、バージョンは1.8.5でした。大感謝です。
CGIが出力する<HEAD>・・・</HEAD>の中に以下を書いて転送してはどうでしょうか。
<meta http-equiv="refresh" content="0; url=http://www.hatena.ne.jp/">
http://www.htmq.com/html/meta.shtml
[別ページへの自動ジャンプと画読み込み]
<meta http-equiv="refresh" content="5; url=aaa.htm">
<meta http-equiv="refresh" content="5">
別な方法として、「(画像式)アクセス解析 」の方法があります。
これはcgiを画像として書いておくことで、アクセス解析を行う方法です。
この場合はcgiのページが開かれることはありませんし、ボタンを押さなくてもcgiが実行されます。
http://www.rescue.ne.jp/cgi/gifaxs/
<img src="cgiaxs.cgi">←ここにイメージタグがあるが何も表示されない。<p>
後、呼び出し元もrubyで書いてある場合はXMLRPCを使うと、サーバーと表示しているページ間でデータのやり取りが出来ると思います。
http://www.linux.or.jp/JF/JFdocs/XML-RPC-HOWTO/xmlrpc-howto-ruby...
呼び出し元がRubyでない場合(例えばJavaScriptで書かれている場合)はAjaxのXMLHTTPRequestが使えるのではと思います。
garyo様、たくさんの解決策ありがとうございます。
今夜、試してみます。うまくいくと良いです。がんばります!!
mponto様、ありがとうございます。これで試してみます。
うまくいったらまたご報告いたします。