質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

1回答

2139閲覧

AjaxでRuby実行

tqkqt0

総合スコア155

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2017/05/10 08:18

似たような質問がありますが、
何時間もはまっているので、質問させてください…

HTML

1 2<input type="button" id="sample" class="get" value="get!"><br> 3<img src="" id="img"> 4 5<script type="text/javascript"> 6 $(function() { 7 $(".get").on('click', function () { 8 var url = './xxx.rb' 9 var img_url = $.ajax({ 10 url: url, 11 type: 'get', 12 }).done(function(data) { 13 console.log(data) 14 }) 15 document.getElementById('img').src=img_url 16 }) 17 }) 18 </script>

ruby

1res = 'http://aaa.html' 2res

↓実行結果
コンソールにはかれているのは

res = 'http://aaa.html' res ```です。 期待値は``http://aaa.html``です。 Railsは導入しておらず、Apachで動作していて、ほかのページは見れます。 些細なことでも可能性を教えていただければと思います。 よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/05/10 08:26

xxx.rbにアクセスして「http://aaa.html」が表示されるのでしょうか。
tqkqt0

2017/05/10 08:36

ありがとうございます。今試すと同じくソースが表示されました。
kei344

2017/05/10 08:40

Ajaxの前にそれについて調べて質問されたほうが良いと思います。
guest

回答1

0

ベストアンサー

ruby側の情報がもう少しあればわかることも多いと思うのですが...。
以下でチェックするといいと思います。

・Ajaxのgetリクエストでちゃんとパラメーター({url: url}のところ)が渡せているか?
-> ChromeDeveloperToolのNetWorkタブで確認できます。

・ruby側で受け取ったリクエストからちゃんとパラメーターが取得できているか?
-> これはApache側でどう処理しているかなので...もう少し情報が必要ですね。。。

投稿2017/05/10 11:04

h_daido

総合スコア824

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tqkqt0

2017/05/11 00:38 編集

ご回答ありがとうございます。 Networkタブで確認しました。 Request URL:http://localhost/html/xxx.rb Request Method:GET Status Code:200 OK (from disk cache) Remote Address:[::1]:80 Referrer Policy:no-referrer-when-downgrade Apachをcgiで指定しているのは別階層のフォルダです。 そこに本来rbファイルを置きたいのですが、htmlフォルダからはアクセスできませんでした。今は仕方なくhtmlフォルダにrbを置いて接続しています。これが原因でしょうか?だとしたら、なんの設定を変えればhtmlからからcgiスクリプトフォルダにアクセスできますでしょうか。 現在、http://localhost/にアクセスするとcgiフォルダが存在しません。 よろしくお願いいたします。
h_daido

2017/05/11 02:54

なるほど、憶測になってしまうのですが。 ・.rbファイルの配置をcgiで指定しているフォルダ(仮に/cgi/とします) ・Ajax送信先のURLを変更 例) var url = '../cgi/xxx.rb' としてみてはいかがでしょうか? ちなみに、CGI側で他にリクエストを捌いている既存コードはないですか? もしあれば、そちらを参考にされるほうが解決は早いと思いますよ! おそらく何かしらの事情がおありなんでしょうが...railsかsinatoraかなにかしらのフレームワーク使われるのを検討されたほうがいいと思いますよ。老婆心ながら。今後もっと苦労されますよ。。。
tqkqt0

2017/05/11 03:14

ご回答ありがとうございます。 HTMLファイルの2階層上の別フォルダにcgiフォルダがあります。 そのなかにrbがあるのですが、../../cgi/xx.rbとしてもundifinedになってしまいます。 既存コードなのですが、htmlから直接rbファイルにアクセスしているものはありませんでした。 そうなんですよね、Rubyも1.8.7でRailsも入っていないため、新参者には大変苦労なシステムです。。ただ、私の一存では変更できなくて>< ほかに何か思いつくことはありませんでしょうか。。申し訳ありません。
h_daido

2017/05/11 03:42 編集

あぁ、すいません。重要な勘違いをしてました。 Ajaxで.rbにアクセスされていたんですね。おそらくそれだと単に.rbファイルの中身(コード)を取得してくるだけになってしまい、実行結果が得られません。consoleの出力結果も確かに一番最初のご質問どおりになりますね。。。 通常、Ajaxで返すレスポンスは、.json、.html、.jsなどのデータ形式が一般的です。 今回の場合は.jsonがマッチするかと思います。 それで、"htmlから直接rbファイルにアクセス"というのはできないと思いますね。。。 サーバー側で処理するプロセスとしては 1. "http://localhost/xxx/xxx.json"といったURLを受理した際に何かしらの.rbコードを動かす(ここは通常はwebサーバーの仕事ですね。) 2. その.rbコード内でjsonを作成してresponseする 3. クライアント側のjsコードでresponseで受け取ったjsonを処理 といった流れになるかと思います。1,2が今回はまっているポイントだと思うのですが、railsだったら瞬殺なんですが、ApacheからCGIだと...。かなりプロジェクトの構成に依存するので、すいませんちょっとわからないですね。 なお、htmlフォルダ配下に.rbのソースコードをおくのは、セキュリティ的によろしくないかとおもいます。htmlフォルダ配下はおそらく一般公開されていますよね?ので、そこにソースをおくべきではないでしょうね。
tqkqt0

2017/05/11 04:49

非常に参考になりました。 プロセスを教えていただきありがとうございます。 rbに直接アクセスするのはおかしいのですね、、 ありがとうございました。もう少し調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問