CGI上で、HTMLのコードを書いて、WEBページを出力(表示)することが出来ますが、それと同じようなことが、Ajax(Jqueryを使っています)で出来ませんでしょうか。
CGIを使ってやろうとしていたのですが、同じページでFormタグを多用しており、CGI以外の方法でページ出力をしようと思います。
HTMLからOnClickで値をAjaxに渡して、データベースとやりとりをし、Ajaxに値を戻してそれを元にページを作成して出力をさせたいのです。(別ウインドウを立ち上げで)
このようなことは出来ますでしょうか。
また、出来るようでしたらどうやってプログラムを作成すればいいでしょうか。
教えてください。よろしくお願いいたします。
No.5ベストアンサー
- 回答日時:
たとえば一例ですが
ページ内に表示領域を作って表示すれば
同一ページ内でも 元データをくずさずに表示できます
ON/OFFを押すと DIV要素が表示されます
AjaxでTXTデータを表示できます
DIV要素などで表示領域を用意して表示
という形でできます
分かりにくい時は再質問を
kawai985さん
ご回答ありがとうございます。
そうですね。DIVを使って、対応したいと思います。そのような構成でしたら出来ると思います。
ありがとうございました。
また何かありましたらよろしくお願いいたします。
LancerVIIさんもお忙しい中ありがとうございます。
あまり時間をかけられないので、上記の方法で試してみます。
しばらくは回答を締め切らないでおいておきますね。
No.6
- 回答日時:
こんにちは。
遅くなりましてすいません。
わざわざ待っていただきありがとうございました。
簡単なサンプルになりますが用意してみました。
http://hppg.moe.hm/okwave/sample/
更新までは実装出来ていませんが、一覧を表示する画面内で詳細データみたいなものをAjaxで取得し、動的に表示します。
本来なら「更新」ボタンを押した時点でサーバへ送信し、データの更新をします。
こんなかんじにすると一覧表示画面で送信されるデータと詳細のデータについてわけて更新できますが、画面は一つで済みます。
ちょっと急いで作ったので効率化とかあまり考えていません。
参考程度にご覧いただければと思います。
LancerVIIさん
お忙しい中ありがとうございました!
サンプルページを拝見させて頂きましたが、とってもかっこいい!ステキなサンプルをありがとうございました!!
ぜひ参考にさせて頂きます!
ありがとうございました!
また何かありましたらよろしくお願いいたします!
No.4
- 回答日時:
http://beauty.geocities.jp/nishihama985/jquery-t …
Ajaxのサンプルです データベースはTXTではだめでしょうか
kawai985さん
ご回答ありがとうございます。
早速サンプルの方を拝見させて頂きましたが、こちらのサンプルはボタンがあるページと同じページ内に呼び出した結果を表示させるものだと思うのですが、
イメージしている状況が、数百行ある表の、ある1行に修正ボタンを置き、それをクリックすると、その1行が編集モードになって別ウインドウで立ち上がり、修正して更新ボタンを押すと、元の数百行あるページも更新されるというイメージです。
元のページの表の行数が大きいので、出来たら別ページを立ち上げて処理をしたいなあと思っているのですが、そのようなことは難しいのでしょうか・・・。
データベースはCGIから呼び出していますので、結果はテキストになります。
No.3
- 回答日時:
こんにちは。
>今回の件ですと、同じHTMLページ内で、Formタグを使ってCGIを呼び出していることが他にもあり、
表の行全体を更新するフォーム内に行ごとのボタンを用意したいから問題が起きているということでしょうか。
>ボタンを押す→Ajaxで値をとる→PerlでDB接続→値に基づいて行の内容を全部取得→
>新しくウインドウを立ち上げて内容をテキストボックスと一緒に表示→
>テキストボックスに表示したものを取得し、DBに登録しなおす(こちらはFormタグでPerl処理でやります)
無理にAjaxを使う必要が見当たらないのですがいかがでしょうか。
ボタンを押す→新しいウィンドウを開く→そのウィンドウに対してパラメータをpost→
xxx.cgiにてDB接続し、値を元に入力ページを表示→そこで入力された内容でDBを更新→サブウィンドウを閉じる→
一覧ページを更新する
マスタメンテ画面をイメージした場合私ならサブウィンドウは開かずに処理します。
ボタンを押す→隠してある入力フィールドと更新ボタンを表示→
更新ボタンを押す→Ajaxにてxxx.cgiにpost→xxx.cgiで更新処理→
更新処理後に戻ってきた値を利用して表に反映→入力フィールドを隠す
どうせAjaxを使うならページの遷移を極力なくします。
>JSON、XML、PHPは使ったことがないので、よく分からないのです
扱いやすい物で戻してあげれば良いわけですのでこれじゃないとだめということはありません。
ただしAjaxを利用していくのであればJSONくらいは扱い方を知っておくと便利ですよ。
サーバサイドの言語も別にPHPじゃなくていいです。
上のような動きで想定があっているかつ少し時間をいただければサンプルを提示します。
違うイメージであれば補足下さい。
サンプルを作れる範囲であれば作ってみます。
LancerVIIさん
ありがとうございます!!
このページ内には行ごとにFormタグを使用するだけならいいんですが、その表のヘッダー部分(1行目)と、表(数百行あります)全体にかかるFormタグがあるため、重なってしまってうまく動作していないように思います。
はい、Ajaxを使わなくてもいいのですが、私の能力ですと、Formタグが使えないとするとAjaxかなあという安易な考えです(笑
> 隠してある入力フィールドと更新ボタンを表示
というのは、元々HTMLに埋め込んでおいて、それを表示したり隠したりすると言うことでしょうか?
JSONは扱えた方がいいのですね。はい、今後の課題にします。
時々見かけたりするので、私にも出来るかなあと眺めていたりしたのですが、難しそうで、とりあえず使っていない状態です。
これから頑張ります。
恐らくイメージと合っていると思います。
サンプルを作ってくださると言うことで本当にありがとうございます!!
よろしくお願いいたします!!
No.2
- 回答日時:
こんにちは。
>HTMLからOnClickで値をAjaxに渡して、データベースとやりとりをし、Ajaxに値を戻してそれを元にページを作成して出力をさせたいのです。(別ウインドウを立ち上げで)
>PHPやJSONを使わないと今回のような状況は出来ませんでしょうか。。
データベースに接続する要件がある限りperlでも良い(ぶっちゃけDBと接続できれば何でも良い)ですがサーバ側での処理は必要です。
(データベースに接続して値を取得する必要があるため)
PHPでサンプルを提示している意味は特に無く(開発環境が手元にあったため)サーバ側でHTMLまたはJSON、XMLでも良いですし、何らかの値を返せればそれを元に新しいウィンドウを立ち上げることが出来ます。
サンプルの「ウィンドウ起動」は難しいことはやっていなく、サーバ側から返ってきた文字をそのまま新しいウィンドウで開いているだけです。
>CGIを使ってやろうとしていたのですが、同じページでFormタグを多用しており、CGI以外の方法でページ出力をしようと思います。
実際どのような動きを想定(実現したいこと)しているか補足いただければもうちょっと踏み込んでアドバイスできると思います。
LancerVIIさん
ご回答ありがとうございます。
今の私の能力ですと、HTMLからPerlを使ってDBとやりとりをし、その結果からページを出力したり、HTMLからAjax(Jquery)からPerlでDBとやりとりし、その結果に基づいてHTMLの構成を変えて出力したりなどのことは出来ます。
今回の件ですと、同じHTMLページ内で、Formタグを使ってCGIを呼び出していることが他にもあり、重なってしまって、Formタグがうまく動作しないため、
Formタグ以外の方法でDBとやりとりをし、その結果を用いて、HTMLページ出力をしたいと考えています。
例えば、表があって、その行ごとにボタンを置き、そのボタンを押すと、その行の内容を新しくウインドウを立ち上げてテキストボックスと一緒に表示し、テキストボックスに入力して修正したらそれをDBに登録し、元の表に反映させると言うことをしたいです。
イメージでは
ボタンを押す→Ajaxで値をとる→PerlでDB接続→値に基づいて行の内容を全部取得→新しくウインドウを立ち上げて内容をテキストボックスと一緒に表示→テキストボックスに表示したものを取得し、DBに登録しなおす(こちらはFormタグでPerl処理でやります)
ただ、JSON、XML、PHPは使ったことがないので、よく分からないのです。。
よろしくお願いいたします。
No.1
- 回答日時:
こんにちは。
データベースから値を取得したものをJSONで返してあげても良いですし、HTMLを返すようにしてあげても良いと思います。
>CGI上で、HTMLのコードを書いて、WEBページを出力(表示)することが出来ますが、それと同じようなことが、Ajax(Jqueryを使っています)で出来ませんでしょうか。
>CGIを使ってやろうとしていたのですが、同じページでFormタグを多用しており、CGI以外の方法でページ出力をしようと思います。
同じようかどうかは微妙なところです。
データベースとのやり取りがあるのでどちらにせよ何らかのサーバ側の技術は必要になります。
以下PHP環境が必要ですがサンプルです。
PHP側でのセキュリティ等は考慮していません。最低限の動作サンプルです。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Ajaxでウィンドウ出力について</title>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">google.load('jquery','1');</script>
<script type="text/javascript">
$().ready ( function() {
$('button:eq(0)').click ( function() {
// サーバ上より非同期通信でHTMLデータを取得してウィンドウを開く
var win = null;
$.post (
'q7267928_1.php',
{ val : $('input:eq(0)').val() },
function ( data ) {
win = window.open ( '', 'newWin', 'width=600,height=300' );
win.document.write ( data );
win.document.close();
}
);
});
$('button:eq(1)').click ( function() {
// サーバ上より非同期通信でJSONデータを取得してウィンドウを開く
var win = null;
$.getJSON (
'q7267928_2.php',
{ val : $('input:eq(1)').val() },
function ( data ) {
win = window.open ( '', 'newWin', 'width=600,height=300' );
win.document.write ( '<html>' );
win.document.write ( '<head><title>' + data.title + '</title></head>' );
win.document.write ( '<body><h1>' + data.title + '</h1>' );
win.document.write ( '<p>data1 = ' + data.data1 + '文字</p>' );
win.document.write ( '<p>data2 = ' + data.data2 + '</p>' );
win.document.write ( '</body></html>' );
win.document.close();
}
);
});
});
</script>
<style type="text/css">
</style>
</head>
<body>
<input type="text" />
<button type="button">ウィンドウ起動</button><br />
<input type="text" />
<button type="button">ウィンドウ起動(JSON)</button>
</body>
</html>
==== q7267928_1.php
<?php
$val = $_POST['val'];
header ( 'Content-Type: text/html; charset=UTF-8' );
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>新規ウィンドウ</title>
</head>
<body>
<h1><?= $val ?></h1>
</body>
</html>
==== q7267928_2.php
header ( "Content-Type: application/json; charset=UTF-8" );
$array = array();
$array['title'] = $_GET['val'];
$array['data1'] = mb_strlen($_GET['val']);
$array['data2'] = date('Y/m/j H:i');
print json_encode ( $array );
?>
LancerVIIさん
ご回答ありがとうございました!!
ですが、申し訳ございません。
CGIはPerlを使っているのと、JSONは使ったことがないため、せっかく教えて頂いたコードが全く分からない状態です。。(泣
PHPやJSONを使わないと今回のような状況は出来ませんでしょうか。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript プラグイン無しでContactform7にdatepickerを実装 3 2022/10/25 02:18
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- 美術・アート トレパク疑惑をかけられにくくするには ここ最近いわゆるトレパク警察のいいがかりがが厳しくなったようで 1 2023/08/21 09:59
- WordPress(ワードプレス) ワードプレスで、投稿一覧ページにタグを表示する方法 投稿につけたタグを、記事一覧ページにもカテゴリと 1 2023/05/10 21:41
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のウィンドウ名を持つウィ...
-
ウィンドウ名の設定
-
<a href="#" …>の意味を教えて...
-
個別にハイパーリンクの色を指...
-
(Javascript)印刷するファイル...
-
JavaScriptからVBScriptの呼び...
-
複数のJavascriptを1つのscrip...
-
JavaScriptでiframeの内容を「...
-
外部ファイル名を変数で指定で...
-
スマホ上で、左右スワイプで次...
-
Base64に変換したHTMLの<script...
-
Vbscriptで自分自身のウィンド...
-
初心者です。あまりに初歩的な...
-
【javascript クロスブラウザ...
-
印刷時に消したいjavascriptがある
-
ブラウザをJavaScriptで最小化…
-
<aタグで変数に文字を代入
-
子フレームの自動リロードは可...
-
pythonのWebスクレイピングでfi...
-
フレームでの右クリック禁止
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ポップアップウィンドウの位置
-
ウィンドウのフォーカスについて
-
window.openで同画面遷移しない
-
入力したテキストボックスのデ...
-
ウィンドウ名の設定
-
ページを表示すると同時に複数...
-
openerの関係が崩れてしまった...
-
特定のウィンドウ名を持つウィ...
-
JavaScript <a>タグで開いた画...
-
2つ同時にポップアップページ...
-
javascriptからウィンドウを開...
-
window.openerを使っての操作
-
Ajaxでウインドウ出力について
-
フレーム内から開いたサブウィ...
-
JavaScriptで開いている別ウィ...
-
window.open でExcelファイルを...
-
小さなウインドウ開いて自動閉...
-
親ウィンドウを警告無しで閉じ...
-
window.open()の複数の使用
-
dummyページを一瞬で開き、閉じ...
おすすめ情報