• ベストアンサー

リンクをはった時のページ間でのデータの受け渡し

いつも、お世話になっています。 JavaScriptで、分からないことが出ましたのでどなたかよろしくお願いします。 それは、フレーム間でのデータのやり取りでしたら教えていただいたのでが、それとは別に、例えば、親元のページにデータを入力した状態で、リンクをつないで新しく画面が移り変わったときに元のデータ(初めの画面に入力されているデータ)をそのまま新しくリンクされたページに引き継がせれることってできるのでしょうか? リンクをはることですので、新しくブラウザは開かれない(1つのまま)ということでよろしくお願いします。

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

  • ベストアンサー
noname#1752
noname#1752
回答No.5

おつかれさまです JavaScriptをつかってデータの受け渡しを行うためにはCookieを使用するほうほうがあります。 具体的には ----送信側htmlに書くJavaScript--- <script language="javascript"> //テキストフィールドの値を取得する function getValue(){  //値を取得する  var va1 = MyForm.textField1.value  var va2 = MyForm.textField2.value  var va3 = MyForm.textField3.value  //クッキーに書き込む  setCookie("value1", va1);  setCookie("value2", va2);  setCookie("value3", va3); window.location.href ="../next/nextPage.htm" } //Cookieに書き込む function setCookie(key, val) { var tmp = key + "=" + escape(val) + "; ";   tmp += "expires=Fri, 31-Dec-2030 23:59:59;    path=/;"; document.cookie = tmp; } </script> ----受信側html(bodyタグでOnLorad()を呼びましょう)-- function OnLorad(){ MyForm2.textField1.value = getCookie("value1"); MyForm2.textField2.value = getCookie("value2"); MyForm2.textField3.value = getCookie("value3"); } function getCookie(key) { var tmp1 = " " + document.cookie + ";"; var xx1 = xx2 = 0; var len = tmp1.length; while (xx1 < len) { xx2 = tmp1.indexOf(";", xx1); tmp2 = tmp1.substring(xx1 + 1, xx2); xx3 = tmp2.indexOf("="); if (tmp2.substring(0, xx3) == key) { return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1))); } xx1 = xx2 + 1; } return(""); } はなはだ簡単ではございますがこれで拾えると思われます

obahiro
質問者

補足

早速のご回答ありがとうございます。 いただいたソースを参考に組んではいるのですがエラーで「文が正しくありません」「オブジェクトを指定してください」というのが出てしまいます。 おそらく、リンク先のページがフレームでできているため、きちんと指定されていないのと、リンクが5つあるためだと思います。 そこで、一つお聞きしたいのですが、「window.location.href="../next/nextPage.htm"」 では、フレームの指定方法って言うのは必要なのでしょうか?もしそうでしたらどのようにすればいいのでしょうか? 5つリンクがあるのですが、下につなげて書くだけでよろしいのでしょうか? なにぶん、JavaScriptに携わって2ヶ月で、いまだよく分かりません。 なにとぞ、よろしくお願いいたします。

その他の回答 (5)

noname#1752
noname#1752
回答No.6

おつかれさまです、 window.location.href ="../next/nextPage.htm" は画面を私が勝手に作ったnextPage.htmに移動するということなので気にせず決り文句ではありません。 すみませんわかりにくくて… Cookieに書き込むということはそのLocalディレクトリ(Cookieフォルダ)にファイルを作成してそこにセットしたCookieの情報を保存することを意味します。 受け取り側は何も意識せずにgetCookieしてやればよいわけです。 では。

  • mishida
  • ベストアンサー率34% (19/55)
回答No.4

 こんにちは。  すみません。「CF」がなんであるかは知りませんが、サーバーにプログラムをアップできる環境でしょうか。  CGI(またはPHPでもASPでもいいです)を使用できれば、ページ間の値の受け渡しは楽なのですが。

obahiro
質問者

補足

CFとは、COLDFusionといいまして、サーバー側で処理をするものです。 今の環境ですとCGIを使う環境ではないので、どうにかJavaScriptで、できないものかと思っております。何故か締め切ってしまっていますが、下の質問でなにかいい方法がございましたらよろしくお願いします。

  • sight
  • ベストアンサー率53% (199/370)
回答No.3

失礼ながら便乗?です。申し訳ありません。>obahiro様 HIROYO様> >2.フォームのhiddenフィールドに持ち回った値を格納し、リンクのonClickで該当フォームをSubmitする。 リンク先が静的なHTMLページの場合もJavaScriptか何かでPOSTデータを受け取る ことが可能なのでしょうか?よろしければ補足をお願いします。 ■GETの字数制限 > (全部で半角256文字だったかな?) ほんとに、何文字だったでしょう?たしか、OS依存だったとは思うのですが、Windows でのGET文字列の制限をご存じの方、教えていただけませんか。

  • sight
  • ベストアンサー率53% (199/370)
回答No.2

私が思いつく限りでは、URLに引数を持たせるのが簡単かな、と思います。 FORMデータのGETでの受け渡しと同様に、 http://www.xxx.jp/linkto.html?name1=data1&name2=data2 とかいう感じでリンクすれば、リンク先のページ内でJavaScriptの location.search で ?以降が拾えるはずです。 ただし、日本語などの2バイト文字を含める場合は、送る前にescape関数などで HTMLエンコードしてあげて、受け取ってからunescape関数でデコードしてあげる 必要があるかと思います。(が、ブラウザによってescape、unescapeはバグや 仕様の食い違いが・・・・。なので、この場合もしかしたらダミーで「見た目 単独ページに見えるフレームページ」を作ってフレーム間でデータやりとりした方が) 楽かも・・・・。 何か、ほかに良い方法がありましたら私も興味がありますのでお願いします。

noname#1785
noname#1785
回答No.1

方法としては2種類。 1.getデータとして引き渡す。  リンクのURLを、***.html?name1=value&name2=value2といったようにくっつけて渡します。  ただし、字数制限があります。  (全部で半角256文字だったかな?) 2.フォームのhiddenフィールドに持ち回った値を格納し、リンクのonClickで該当フォームをSubmitする。  POSTデータになるので、1.と違い字数制限はありません。  フレームを使っている場合は、ターゲット指定(どこのフレームにデータを渡すか)の指定を、キチンと管理してあげる必要があります。 # CFを使ってるんでしたっけ? # そちらを使って良いのであれば、Session変数とか、ク # ライアント変数を使うって言う手もありますよ。

obahiro
質問者

補足

HIROYOさんのご回答を参考とさせていただこうと思いましたが、今の状況ですと難しいです。 それは、まずリンクのはり方にあるのですが、5つ帳票があり、そのうちの一つをラジオボタンで選びボタンを押すことによってリンクをはるようにしています。しかも、リンク先も全てフレームページになっており、困っています。 もしよろしければ、CFのセッション変数・クライアント変数について少し教えていただきたいのですが・・・リファレンスを見ても載っていなく途方にくれてしまっています。よろしくお願いいたします。

関連するQ&A

  • フレームページへのリンクについて

    上中下3分割のフレームページがあります。真ん中のページの指定の場所へリンクしたいと思い、いろいろやってみましたが、上手くいきません。 やり方として 1.リンク先ページの指定の場所(今回は画像です)を選択し右クリック→リンクの挿入→ラベルを付ける→半角英数で任意に設定→OKで閉じる→ページの保存→フレーム設定ページの上書き保存 2.リンク元のページの指定の場所をドラッグ反転→右クリック→リンクの挿入→ファイル→リンク先のファイル名入力(フレーム全体のファイル名を入力しました)→ターゲット→親ウインドウ→ラベルタグ→ここでラベル入力欄の右端の下向き矢印をクリックしても何も表示されないので、1.のリンク先で入力したラベル名を手入力→OKで閉じる→ページの保存→フレーム設定ページの上書き保存 という手順でやりました。この結果、リンク元をクリックするとリンク先のページに飛びますが、指定の場所へは行かず、なんていうのかなあ、デフォルトの位置とでもいいますか・・・が表示されてしまいます。 どこが悪いのでしょうか?ご存知の方お見えでしたらよろしくお願いいたします。

  • フレームリンク内にリンク先のページが表示されてしまいます

    フレームリンクを使うと外部のページを表示できるのですが、 表示してから外部ページをクリックしても、 フレームリンク内にリンク先のページが表示されてしまいます。 (アドレスはフレームリンクページのURL) クリックした際に、実際のリンク先のページが表示することは可能でしょうか? Javascriptを使用してもOKです。 よろしくお願いします。

  • 新しいブラウザが立ち上がるようにリンクさせたい。

    ビルダーを使用しています。 よくリンク先をクリックすると、新しいブラウザ画面が立ち上がり、 そこにリンク画面が出るようなHPがありますが、 やり方がわかりません。 フレームページを使用して作っているのですが、 そのままリンクさせると、狭い枠の中にリンク画面が表示してしまいます。

  • リンクされているページにうまくリンクできません

     OSはWindows98,ブラウザはInternet Explorer 6.0を使用しています。最近ブロードバンドを始めWindows98のアップデートを実行したのですが,そのころから,あるページから,そのページにリンクするページを開こうとすると,スムーズに移動せず,小型のウインドウのフレームの中に現在のページが写し取られ,マウスポインタが砂時計表示となって,そのままいつまでたってもリンクされたページに移動しないということが多くなってしまいました。 Internet Explorerのセキュリティが変更されたからかなとは思うのですが,どこに原因があり,どこを直せばよいのか分からないので,どなたか分かる方,教えてください。

  • インラインフレームを使用したページへのリンク

    インラインフレームを使用したページへのリンクで困っています。 現在、デフォルトで「A」のページにインライフレームで「B」のページを表示されており、「A」の中の「(1)」のボタンを押す事によりフレーム内が「B」から「C」、「(2)」のボタンを押すと「D」が表示されるようになっています。 このページへのリンクを作成するとインラインフレーム内は「B」のページが表示されるのですが、これを初めからフレーム内に「C」、または「D」を表示したままの状態でのリンクを作成したいのですがどうすればよいでしょうか?

  • javascriptのリンクページが表示されません

    http://ctime.cool.ne.jp/MyDiamondBaby/ 上のページのPLAYボタンを押してもリンク先へ移動できません。ブラウザの新規ページで開いてもjavascript:func();というエラーページに飛んでしまいます。どうすれば見られますか? ブラウザはIE、Sleipnirで、javascript使用は許可しています

  • 「戻る」リンクをページ内につくる方法

    ページ内に「戻る」リンクを設置したいのですが、 #ブラウザの「戻る」ボタンと同じ動作 Javascript(history.back)を使わずに実現する方法はありますか?

    • 締切済み
    • CGI
  • フレームを使ったページにリンクを貼る

    今ホームページを作成しています。フレームを使用しているページにリンクを貼りたいのですが、普通はそのフレームのページたとえばindexに貼りますよね。(メニューとそのページのトップページ) しかし、そうではなくフレームを使用したままでトップページではないところにリンクを貼りたいのですが、どうしたらよいでしょうか。 やはり、そのページにもフレームを使って別のHTMLファイルを作るしかないのでしょうか。 説明が下手で申し訳ありません。 分かる方教えていただけないでしょうか。

    • ベストアンサー
    • HTML
  • ページ途中に飛ばす「#」リンクが飛んでくれません。

    画面をフレームで上下に分け、さらに下フレームを左右に分けています。下画面の左フレームにナビボタンを置き、あるボタンだけ、クリックで、右フレームTOPのページ半ばに画面が飛ぶようにリンクをしています。 ある事で、本来の右画面トップとは違うページを最初に表示する必要があり、 新たに、トップとは違う別の画面を最初に表示するフレームセットを作成しました。それぞれのフレームネームは本来のトップが表示されるフレームセットのネームと同じにしてあります。 その新たに作成したフレームセットをURLに打ち込み表示した場合、先ほどのTOPのページ半ばに移動するはずのリンクが作動しません。 本来のURLから入るとちゃんと作動します。 何が原因なのでしょうか? すいませんが、よろしくお願い致します。

  • PHPのデータの受け渡しとフレーム

    PHPを最近始めた者なのですが、 データの受け渡しについてわからないことがあります。 あるページのフォームで入力したデータをフレーム構造のページへ受け渡したとします。(データを入力したページをAとします) これはページAに設置されているフォームのソースです。 <form action="フレームページ.php" method="post"> <input name=(省略)> <input type='submit' value='submit'> </form> フレームページで表示されるページをB、Cとします。 目的はページAで入力したデータをページB、Cに反映させることなのですが、どうしても構造上問題があるのか反映されません。 たぶん受け渡したいデータがフレームページにいってしまい、ページBとCには届いていないと思うのですが、なんとかページB、Cに渡す方法はないでしょうか? フォームのactionをページB.phpと直接打てばデータが反映されることは確認しています。

    • ベストアンサー
    • PHP

専門家に質問してみよう