人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Rubyで指定したあるURL(たとえばhttp://www.hatena.ne.jp/)に飛ぶ命令を教えてください。

自分がやりたいことですが、あるURLに存在する情報をゲットしたいのではありません。
あるURL上のボタンを押すとRubyで作ったCGIが動くようにしたのですが、いまのままだと○○.cgiの画面になってしまいます。
そうではなくて、そのCGIの処理が終わったあとは、元のURLの画面に戻りたいのです。
Rubyのバージョンはわかりません。すみません。ですがそれほど古くはないと思います。

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

●質問者: lionfan
●カテゴリ:コンピュータ インターネット
✍キーワード:CGI Ruby URL すみません バージョン
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● mponto
●40ポイント ベストアンサー

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様、ありがとうございます。これで試してみます。

うまくいったらまたご報告いたします。


2 ● るびきち
●40ポイント

このテの質問をするならば、サンプルとなるサイトを用意して、どのようなことをやってどんな結果を望んでいるのかを明確にしてください。

具体的な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でした。大感謝です。


3 ● garyo
●40ポイント

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が使えるのではと思います。

http://ja.wikipedia.org/wiki/Ajax

◎質問者からの返答

garyo様、たくさんの解決策ありがとうございます。

今夜、試してみます。うまくいくと良いです。がんばります!!


4 ● worris
●40ポイント

CGIでは何もprintせずに、処理の最後に「print "Location: http://www.hoge.com/fuga.html\n\n"」ではないでしょうか。

◎質問者からの返答

worris様、ありがとうございます。

これは失敗しました・・・。

画面に Location: http://www.○○.jp/~○○.html と出るだけでした。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ