• ベストアンサー

指定されるdiv の部分の再読み込み処理について

javascript についてあまりわからないですが、javascript で以下のようなことをしたいですが、よくやり方がわかないので、わかっている方は教えていただきたいです。 <div id="sample"> この部分には、DBからデータを取り出す処理が入っているとする </div> form でsubmitをすると、id が sampleのところの処理を更新してくれる ようなjavascript はどうやって実現しますか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

超適当に書いて見た。適切に直してね <script> function Getdata() { var xmlHttp = (window.ActiveXObject)?new ActiveXObject("Msxml2.XMLHTTP"):new XMLHttpRequest(); xmlHttp.open("POST","DB_Access.php",true); xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); var Querydata="prm1=val1&prm2=val2&prm3=val3"; //<=から取ればよい。 xmlHttp.send("Querydata"); xmlHttp.onreadystatechange = function(){ if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { document.getElementById("sample").innerHTML=xmlHttp.responseText; } }; } </script> <form action="#"> ------ <input type="submit" onclick="Getdata();return false;"> </form>

その他の回答 (2)

  • taporu
  • ベストアンサー率44% (46/104)
回答No.2

Ajaxは途中まで、javascriptと同じの処理をします。 例: <html> <head> <script type="text/javascript"> <!-- function DBdata() { //実行する処理 } //--> </script> </head> <body> <input type="bottom" value="クリック" onclick="DBdata();"> <div id="sample"></div> </body> </html> こんな感じでいいと思います

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

これはAJAXというやつですね。  javascriptで直接DBからデータを取り出すような事は普通は しません。サーバーサイドのプログラムを使います。  javascriptは、フォームに入力されたデータを、非同期通信リクエストでサーバーサイドのプログラムにGET又はPOSTして、レスポンスのDOM要素を<div>の要素にセットするという仕事をさせます。  サーバーサイドのプログラムは、送信されたデータを基にDBアクセスして結果をXHTMLで出力します。 ※AJAXを検索すれば具体的な方法が見つかります。

ikutame
質問者

補足

返答してくれてありがとうございます。 実は、DBにアクセス処理も書いてありますが、ただ、formのSubmitをおしたら、どういうに<div> の部分を再度読み込みさせるのが、よくわからないですが、button押すというイベントから、どうやってdiv の 部分を起動するのを解決すれば、いいでしょうか? ありがとうございます。

関連するQ&A

  • javascriptで指定するdivを読み込み

    初歩的な質問ですみません。 どなたか詳しい方教えてください。 同一ページ内で、指定したdivの内容を読み込みしたいのですが javascriptで以下のことは可能でしょうか? <html> <body> <div id="sample">内容内容内容内容内容内容</div> • • • ここにもsampleの内容を読み込んで表示させたい。 </body> </html>

  • <div>を移動するには?

    以下のようなhtmlがあります。 -------------------------------------------- <html> <body> <div id="wrapper"> <div id="d1">ここは第1番です。<form type="input" name="b1" value="Topへ"></form></div> <div id="d2">ここは第2番です。<form type="input" name="b2" value="Topへ"></form></div> <div id="d3">ここは第3番です。<form type="input" name="b3" value="Topへ"></form></div> <div id="d4">ここは第4番です。<form type="input" name="b4" value="Topへ"></form></div> <div id="d5">ここは第5番です。<form type="input" name="b5" value="Topへ"></form></div> </div> </body> </html> -------------------------------------------- 例えばボタン"b3"を押すと、<div id="d3">が一番上に移動するようにするには、どうしたら良いでしょうか? 残りのdivはそのままの順位で下にずれることになります。 sortなどは使えないと思いますし、どうすればイイのか見当がつきません。 もしお分かりの方おられましたら、ヒントだけでもお願い致します。

  • divのheight指定で画面一杯に表示したい

    よろしくお願い致します。 <div>の<height>を100%に指定して、 タブレット等での表示時、縦でも横でも画面一杯に 表示させたいと考えています。 とりあえず css で以下は宣言済みです。  html, body {   height: 100%;   margin: 0px;   padding: 0px;  } 親子構造としては以下を想定しています(いくらか簡略化しています) <html>  <body>   <div id="H" style="height:60px;">    (1)ここにヘッダー的なもの   </div>   <div id="B" style="height:100%; overflow: auto;">    (2)この部分を縦一杯にしたい   </div>  </body> </html> (2)の部分にはjavascriptでサーバから取得した XMLのデータを埋め込んでおります。 その際、選択行の色付け等を行いたかった為、 大枠を<div>でくくり、その中に<table>で表組みしています。 最終的な構造は以下のようになっているはずです。  <div id="B" style="height:100%; overflow: auto;">   <div id="rdiv1"><table id="rtbl1"><tr><td ・・・ /td></tr></table></div>   <div id="rdiv2"><table id="rtbl2"><tr><td ・・・ /td></tr></table></div>   <div id="rdiv3"><table id="rtbl3"><tr><td ・・・ /td></tr></table></div>   ・・・  </div> 行ごとの<div>や、その中の<table>でも height: 100%; は指定しています。 また、1行あたりの高さは<td style="height: 40px;">と指定しています。 (rowspanを使ってのぶち抜きを行っているため) html と body に height:100%; を指定しているので、 予想ではヘッダー用のdivが指定の高さで表示され、 次のdivが残りの高さ分一杯に表示。 その中のデータは overflow:auto; でスクロールできる。 と考えていたのですが、実際はjavascriptで埋め込んだdiv、 及びtableの高さまで伸びてしまい画面上を大きくはみ出してしまいます。 (divのoverflowが全く機能しません) 100%ではなく 500px としてみたところ、 そのサイズに収まってスクロールできました。 (縦一杯ではありませんがdivのoverflowは機能しました) 何とか height 100% を実現して、 divのスクロールバーのみでの表示を行いたいのですが、 何か指定が足りないのでしょうか?

    • ベストアンサー
    • CSS
  • 入力内容をリアルタイムに取得・表示する処理

    次のような内容でテキストエリアに入力された特定のキーワードをカウントしているのですが、カウントの値をリアルタイムに取得・表示にはどのような処理を加えたら良いのでしょうか。 <form id="post" name="post" method="post" action="post.php"> <texarea id="text" class="text-edit" name="text"></textarea> <input id="submit" name="submit" type="submit"> </form> (<div id="keyword-counter"></div>をここに追加) <div id="word-counter">文字数</div> <script type="text/javascript"> jQuery( function($) { function KeywordCounter() { var input_text = document.post.content.value; var word = input_text.split('キーワード').length -1; } $('#word-counter') .before('<div id="keyword-counter"></div>').bind('keyup', KeywordCounter); KeywordCounter(); }); </script>

  • onclick→次ページでサーブレットDB処理表示

    http://okwave.jp/qa/q8302602.htmlの質問の続きとなるのですが、 JavaScriptからサーブレットのURLにsubmitするコードですが、 以下のように2つ書いてみましたが、合っていますでしょうか? そして次に何を書けばいいでしょうか?  function submit_func() { // フォームオブジェクトに対して値をサブミットを実行する form2.submit(); } <body> <form name="form2" action="/test/sample.do" method="POST"> <p><a href="javascript:form2.submit()">リンク直接</a></p> <p><a href="javascript:submit_func()">リンク関数</a></p> </form>

  • <Div>の中の要素の数を調べる

    こんにちは。 タイトルの文が合っているのか分かりませんが、こういうことです。 たとえば、<div id="box">~~</div>の中に、 <a href="...">~</a>が何個あるかを調べて書き出す方法はありませんでしょうか。 JavaScriptで実現したいんですが、慣れてないので上手く出来ません。 よろしくお願いします。

  • JQueryの変数の扱いで弱っています。

    お世話になります。 JQuery初心者です。 3日程、ハマリ、行き詰まったので、相談させて下さい。 アマゾンのレビューの「レビューは参考になりましたか?」「はい」「いいえ」の 様なものを作りかけています。 その際、以下の様な記述をしています。 (肝心な部分抜粋) ---------------------------------------------- 大元   正常に稼働 ---------------------------------------------- <!-- JQuery --> <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script> <script type="text/javascript"> <!-- $(document).ready(function(){ $("#form1").submit(function() {        //●●●この  #form1  の部分を変数にしたい var str = $(this).serialize(); 処理 }}; --> </script> </head> <body> <form id="form1" method="post" action="">    //●●●#form1とはコノ部分 <select name="option"> <option value="yes" selected>参考になった</option> <option value="no">参考にならなかった</option> </select> <input type="submit" name="submit" value="投票する"/> </body> </html> ---------------------------------------------- 上記の記述で正常に稼働しています。 が、1つのページにフォームを複数作り、それぞれのフォームにIDをふって、 それぞれ正常に稼働させたいのです。 そこで、javascriptの $("#form1").submit(function() {  ここの   #form1   部分を変数にして、複数のフォームに対応させたいと思っています。 が! 以下の様に改良したところ、正常に稼働しません。 ---------------------------------------------- 以下、改良部分   うまく稼働せず ---------------------------------------------- -------javascript部分 $("input").click(function(){ //●●●ここを改良 変数作成 id2= $(this).attr("class"); sharp="#form"; id3 = sharp + id2; }); $("id3").submit(function() {       //●●●ここを改良 変数指定 -------フォーム部分 <form id="form1" method="post" action=""> <input type="submit" name="submit" value="投票する" class="1"/>     //●●●ここを改良 class="1" を追加 ------------------------------------------------- つまり、classの「1」をjavascript部分で読み取って、#form の文字列と組み合わせて    #form1 として、機能させたいのですが、うまくいきません。 (何故か、$("#form"+id2) の部分がうまく機能しません。) ※要は複数のフォームのidに、1つのjavascriptで対応させたいだけで、 上記の様な、まわりくどいやり方には全くこだわっていません。 どうか、迷える子羊に愛の手を!

    • ベストアンサー
    • AJAX
  • 連続処理要求の禁止について

    ASPかJAVAScriptで質問するか 迷ったのですが、ASPで質問させて頂きます。 以下の流れで処理が走ります。 1.ASPで作成されたHTMLを表示する。 2.表示されたHTMLでSubmitボタンを押下する。 3.OnSubmitでHTMLに入力されたデータをチェックする(JAVAScript) 4.チェックが正常ならSubmitし、自ページをロードする。 5.ASPで入力したデータを取得し、DBに登録する 6.DBに正常登録されたら違うURLに飛ぶ といった流れの中でSubmitボタンを押下後、 再度Submitボタンが押されても無効にしたいのですが、 何か方法をご存知でしたら御教授ください。 できたら、フラグとかを立てずに、 JAVAScriptの処理中やサーバからの応答待ちといった ステータスを取得して制御したいと思っています。 フラグを立てなければ無理といった情報でも知りたいので、 御教授お願いいたします。

  • <div>タグでサイドバーを作るときの幅の指定方法

    全体を囲むdivの中にサイドバーとメインコンテンツ用のdivを入れたいと思っています。 <div id="allContents" style="width:100%;">  <div id="sideBar" style="float:left; width:200px;"></div>  <div id="main" style="float:right;"></div> </div> で、このときに、右側に表示される#main部分の幅を「残り全部」にしたいのですが、 widthに何を指定したら良いのでしょうか? サイドバー部分が200px固定で、残りのメイン部分の幅はブラウザの右端までにしたいのです・・。 (Javascriptで#main部分の長さを取ろうと思っているので、中に何も入っていなくても  divの大きさが一杯までなるようにしたいのです・・) ご教授よろしくお願いします。

    • ベストアンサー
    • HTML
  • Windowsから既存WebのFORMのSubmitにパラメータをわたす。

    1.Windowsから既存Webのcgiにパラメータを渡して、表示されるデータをローカルのDBに保存したい。 以下が、WebのFORMのSubmit部分で、submit後に表示されるWebデータを取得したいのです。<form action="http://www.XXX.jp/cgi.exe" method=POST> <input type=HIDDEN name="CNAME" value="/list"> <input type=SUBMIT value="一覧"> </form> どの様にすれば、実現できますでしょうか? よろしくお願いします。