OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • 困ってます
  • 質問No.109750
  • 閲覧数1497
  • ありがとう数3
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 46% (22/47)

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

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

  • 回答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

お礼率 46% (22/47)

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

その他の回答 (全5件)

  • 回答No.1

方法としては2種類。 1.getデータとして引き渡す。  リンクのURLを、***.html?name1=value&name2=value2といったようにくっつけて渡します。  ただし、字数制限があります。  (全部で半角256文字だったかな?) 2.フォームのhiddenフィールドに持ち回った値を格納し、リンクのonClickで該当フォームをSubmitする。  POSTデータ ...続きを読む
方法としては2種類。

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

# CFを使ってるんでしたっけ?
# そちらを使って良いのであれば、Session変数とか、ク
# ライアント変数を使うって言う手もありますよ。
補足コメント
obahiro

お礼率 46% (22/47)

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

ベストアンサー率 53% (199/370)

私が思いつく限りでは、URLに引数を持たせるのが簡単かな、と思います。 FORMデータのGETでの受け渡しと同様に、 http://www.xxx.jp/linkto.html?name1=data1&name2=data2 とかいう感じでリンクすれば、リンク先のページ内でJavaScriptの location.search で ?以降が拾えるはずです。 ただし、日本語などの2バイ ...続きを読む
私が思いつく限りでは、URLに引数を持たせるのが簡単かな、と思います。
FORMデータのGETでの受け渡しと同様に、
http://www.xxx.jp/linkto.html?name1=data1&name2=data2
とかいう感じでリンクすれば、リンク先のページ内でJavaScriptの
location.search で ?以降が拾えるはずです。

ただし、日本語などの2バイト文字を含める場合は、送る前にescape関数などで
HTMLエンコードしてあげて、受け取ってからunescape関数でデコードしてあげる
必要があるかと思います。(が、ブラウザによってescape、unescapeはバグや
仕様の食い違いが・・・・。なので、この場合もしかしたらダミーで「見た目
単独ページに見えるフレームページ」を作ってフレーム間でデータやりとりした方が)
楽かも・・・・。

何か、ほかに良い方法がありましたら私も興味がありますのでお願いします。
  • 回答No.3
レベル11

ベストアンサー率 53% (199/370)

失礼ながら便乗?です。申し訳ありません。>obahiro様 HIROYO様> >2.フォームのhiddenフィールドに持ち回った値を格納し、リンクのonClickで該当フォームをSubmitする。 リンク先が静的なHTMLページの場合もJavaScriptか何かでPOSTデータを受け取る ことが可能なのでしょうか?よろしければ補足をお願いします。 ■GETの字数制限 > ...続きを読む
失礼ながら便乗?です。申し訳ありません。>obahiro様

HIROYO様>
>2.フォームのhiddenフィールドに持ち回った値を格納し、リンクのonClickで該当フォームをSubmitする。

リンク先が静的なHTMLページの場合もJavaScriptか何かでPOSTデータを受け取る
ことが可能なのでしょうか?よろしければ補足をお願いします。

■GETの字数制限
> (全部で半角256文字だったかな?)
ほんとに、何文字だったでしょう?たしか、OS依存だったとは思うのですが、Windows
でのGET文字列の制限をご存じの方、教えていただけませんか。
  • 回答No.4
レベル9

ベストアンサー率 34% (19/55)

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

お礼率 46% (22/47)

CFとは、COLDFusionといいまして、サーバー側で処理をするものです。
今の環境ですとCGIを使う環境ではないので、どうにかJavaScriptで、できないものかと思っております。何故か締め切ってしまっていますが、下の質問でなにかいい方法がございましたらよろしくお願いします。
投稿日時 - 2001-07-26 18:19:48
  • 回答No.6

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

window.location.href ="../next/nextPage.htm"
は画面を私が勝手に作ったnextPage.htmに移動するということなので気にせず決り文句ではありません。
すみませんわかりにくくて…

Cookieに書き込むということはそのLocalディレクトリ(Cookieフォルダ)にファイルを作成してそこにセットしたCookieの情報を保存することを意味します。

受け取り側は何も意識せずにgetCookieしてやればよいわけです。

では。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ