アンカーで同一のCGIを別ウィンドウに起動してパラメータを渡すには?

[上に] [前に] [次に]
アイモモ 2000/01/28(金) 14:37:39
お世話になっております。
リンクを使って今起動しているCGIとまったく同じCGIを
別のウィンドウに起動したいのですが、パラメータが渡りません。
こういうときどのようにパラメータを渡したら良いのでしょうか?

#どうも新しいウィンドウではなく、今起動しているウィンドウのパラメータ
#を変えているだけのような感じがする・・・?

↓ソースです。

(略)
<SCRIPT LANGUAGE="JavaScript">
<!--
function goNewPage(moji){
    document.menu.flag=1;
    document.menu.name=taro;
    document.menu.str=moji;
    return true;
}
//-->
</SCRIPT>

・・・

<FORM NAME="menu">
<INPUT TYPE="hidden" NAME="flag" VALUE="">
<INPUT TYPE="hidden" NAME="name" VALUE="">
<INPUT TYPE="hidden" NAME="str" VALUE="">
<A HREF = "test.cgi" onClick = "return goNewPage('ここをクリック');" TARGET="_blank">ここをクリック</A>
(略)

透明人間 2000/01/28(金) 14:49:34
    document.menu.flag.value=1;
    document.menu.name.value=taro;
    document.menu.str.value=moji;

では?

アイモモ 2000/01/28(金) 15:36:22
・・・すみません、たしかにvalueを書き忘れました。
それでもパラメータ渡らないのですが。
よろしくお願いします。m(_  _)m

ラウォッチ 2000/01/28(金) 15:50:08
以下でどうですか〜
function goNewPage(moji){
    document.menu.flag.value="1";
    document.menu.name.value="taro";
    document.menu.str.value=moji;
//  return true;
    document.menu.submit()
}

ラウォッチ 2000/01/28(金) 15:56:12
よく考えると、ちょっとおかしい。
こんな感じかなぁ〜

<SCRIPT LANGUAGE="JavaScript">
<!--
function goNewPage(moji){
    document.menu.flag=1;
    document.menu.name=taro;
    document.menu.str=moji;
    document.menu.submit();
}
//-->
</SCRIPT>

<FORM NAME="menu" ACTION="test.cgi">
<INPUT TYPE="hidden" NAME="flag" VALUE="">
<INPUT TYPE="hidden" NAME="name" VALUE="">
<INPUT TYPE="hidden" NAME="str" VALUE="">
<A HREF = "#" onClick = "return goNewPage('ここをクリック');" TARGET="_blank">ここをクリック
</A>

アイモモ 2000/01/28(金) 16:13:00
ラウォッチさんレスありがとうございます。
goNewPageの関数のなかにdocument.menu.submitとかくと
前のページ(新しいページでないほう)がsubmitされてしまいます。

#同じCGIだから?
う〜ん、むずかしいです。

アイモモ 2000/01/28(金) 16:19:21
ラウォッチさんレスありがとうございます。
goNewPageの関数のなかにdocument.menu.submitとかくと
前のページ(新しいページでないほう)がsubmitされてしまいます。

#同じCGIだから?
う〜ん、むずかしいです。

ラウォッチ 2000/01/28(金) 16:30:56
わかった! コリャ無理だ!
HREFからのCGIではフォームのデータは渡せません。

ですので、別の方法を

function goNewPage(moji){
     URL = "test.cgi?flag=1&name=taro&str=" + moji;
     location.replace(URL);
}
<A HREF = "#" onClick = "return goNewPage('ここをクリック');" TARGET="_blank">ここをクリック

アイモモ 2000/01/28(金) 17:34:55
と、いうことはCGIのpostにしてもget状態(^ ^;
にしかできないということですか・・・。

ラウォッチ 2000/01/28(金) 18:04:39
CGIの方で、両方(postとget)めんどうみればいいのでは...。

アイモモ 2000/01/28(金) 18:20:54
getかpostかは別にして・・・。
location.replaceでやると、新しいページに前のページがきて、
前のページに新しいページがくる?のですが、対処法はありますか?
あと、「ここをクリック」とか全角の文字は渡せてないようなんですが・・・。

かえる 2000/01/28(金) 18:21:31
formのtargetに_blankを指定すれば新たにウィンドウが開き、
そちらにフォームのデータが渡せます。

<SCRIPT LANGUAGE="JavaScript">
<!--
function goNewPage(moji){
    document.menu.flag.value=1;
    document.menu.name.value=taro;
    document.menu.str.value=moji;
    document.menu.submit();
}
//-->
</SCRIPT>

<FORM NAME="menu" ACTION="test.cgi" target="_blank">
<INPUT TYPE="hidden" NAME="flag" VALUE="">
<INPUT TYPE="hidden" NAME="name" VALUE="">
<INPUT TYPE="hidden" NAME="str" VALUE="">
<A HREF="#" onClick="return goNewPage('ここをクリック');">ここをクリック</A>

アイモモ 2000/01/28(金) 18:44:29
かえるさんありがとうございます。
これだとある意味うまくいくのですが・・・。
全ての動作に対して新しいウィンドウが開いてしまいます。
例えば、リンクのボタンを押したときだけで
通常の送信ボタンを押したときは新しいウィンドウは開かない!
というふうにできないもんでしょうか?

よろしくお願いします。

ラウォッチ 2000/01/28(金) 18:45:47
かえるさんのでは、必ず別ウインドウが開いてしまいます。
(アイモモさんは元のは、そのウインドウのままサブミットしたいみたい)

こちらも、target="_blank"を Aタグに入れるとか。
<A HREF="#" onClick="return goNewPage('ここをクリック');" target="_blank">ここをクリック</A>

>全角の文字は渡せてないようなんですが・・・。
は、今から調べてみます。

ラウォッチ 2000/01/28(金) 19:03:58
今度は、デバックしました!

<HTML>
<BODY>
<SCRIPT>
function goNewPage(moji){
//   alert(moji);
     URL = "test.cgi?flag=1&name=taro&str=" + moji;
     document.links[0].target="_blank";
     document.links[0].href=URL;
}
</SCRIPT>
<A HREF = "#" onClick = "return goNewPage('ここをクリック');">ここをクリック</A>
</BODY>
</HTML>

あと、漢字ですが、JavaScript上では問題ないですね。
ただ、HREFの時は自力でURLエンコーディングが必要なのかも。
この辺はちょっとわかりません。

アイモモ 2000/01/28(金) 19:54:10
・・・スミマセン、できません。
わけも分からず丸コピーしてるからいけないんですね。
<A HREF = "#" ・・・
の#の意味は何ですか?
新しいウィンドウをひらかず、ページ内のある位置に飛ぶだけなんです。

ラウォッチ 2000/01/28(金) 21:37:56
#はHTML文書の先頭の意味です。

>新しいウィンドウをひらかず、ページ内のある位置に飛ぶだけなんです。
links[0]のインデックスはそのページの先頭行からのゼロ始まりで、
<A HREF〜>の数に対応します。
(先頭行から3番目の <A HREF なら2なります)

アイモモ 2000/01/28(金) 22:00:00
[[解決]]
<A HREF = "#" onClick = "return goNewPage('ここをクリック');">ここをクリック</A>
とかいたら先頭にとんでたんですね。

ところで、あきらめてボタンを透過にしてごまかそうと思って
「ボタン」で検索したら過去に同じ質問している人がいまして・・・。
#「アンカー、リンク」だとひっかからなかったのにぃ。

!解決しました!
<A HREF="JavaScript:document.menu.flag.value='1';document.menu.submit();>ここをクリック</A>
でいけました。

みなさまありがとうございました。
今日はぐっすり眠れそうです。\(_ _).zZ

[上に] [前に] [次に]