人に聞けない痔の悩み、これでスッキリ >>

<a href="abcd.cgi?mode1=1&mode2=2&mode3=3&mode4=4&mode5=5" >

としたら、このままではGET方式でデータの受け渡しが行われますよね?そうではなく、テキストリンクでPOST方式でのデータの受け渡しをしたい場合はどうすればいいですか?その際、リンクにマウスを乗せたときにブラウザ左下にリンク先のURLが出るのも避けたいです。(←無理・もしくは実装が面倒ならこれはいいです。)submitボタンは使わない方向でお願いします。

GET方式だと、履歴に****?mode1=1&mode2=2&mode3=3&…
と表示されてしまうようなので、<a href=....>リンクでなんとかそれを無くしたいという事情で質問しまた。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

JavaScript を使えば可能です。



まず、POST 送信用のフォームを用意します。
必要なパラメータは INPUT タグの type="hidden" を使い、ここに全て書き出します。

<form name="Form1" action="abcd.cgi" method="post">
<input type="hidden" name="mode1" value="1">
<input type="hidden" name="mode2" value="2">
<input type="hidden" name="mode3" value="3">
<input type="hidden" name="mode4" value="4">
<input type="hidden" name="mode5" value="5">
</form>

リンクの方はこのフォームを送信するように記述します。
この時、リンクからフォームが操作できるように、フォームに名前(ここでは「Form1」)を付けておきます。

<a href="javascript:document.Form1.submit()">送信</a>

この方法ならリンクにマウスを乗せても、URLがステータスバーに表示されることもありません。

ただし、このままでは JavaScript 依存になってしまうので、万人向けにしたいなら送信用リンクタグは JavaScript が有効な時だけ表示し、無効な場合は送信ボタンを表示するようにします。

<form name="Form1" action="abcd.cgi" method="post" style="display:inline">
<input type="hidden" name="mode1" value="1">
    :
<script type="text/javascript"><!--
document.writeln('<a href="javascript:document.Form1.submit()">送信</a>');
//--></script>
<noscript><input type="submit" value="送信"></noscript>
</form>

※フォームの中でリンクを表示するため、フォームがインライン表示されるようにスタイルシートを設定しています。
    • good
    • 0
この回答へのお礼

ありがとうございます^^
アドバイスを元に無事解決いたしました。
またよろしくおねがいします~

お礼日時:2004/03/08 10:14

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QリンクでPOSTデータを送信することは可能ですか?

はじめまして。
Submitボタンを使用せずに<A>リンクでFORMのPOSTメソッドデータを送信することは可能でしょうか?
やはりURLにデータを付加して送信するしかないのでしょうか?
ご教授よろしくお願い致します。

Aベストアンサー

javascript を使えば可能です。大雑把にはこんな感じ。

・パラメータが全部 hidden な form を記述しておく(ブラウザでは表示されない)
・<a href> では、その form を submit するように javascript を記述する

試してないですけど、こんな感じ。

<form name=f method=POST action="http://どこか">
<input type=hidden name=x1 value=v1>
</form>

<a href="javascript:document.f.submit()">リンクから submit</a>

Aベストアンサー

hogehoge.phpで値を受け取りたいということでしょうか。
それでしたら

引数の数が決まっていないのでしたら
<a href="hogehoge.php?30,60…">login</a>
という形にリンクを造り
hogehoge.phpで
<?
//explode関数は「,」で区切り順番に配列に格納する
//$_SERVER['QUERY_STRING']はURLの?の後に付けられた
//文字列(引数)を取得できます。

$intArray = explode(",",$_SERVER['QUERY_STRING']);


print_r($intArray); //変数の内容を表示します
?>

とすれば変数$intArrayに配列で投げ込まれます。

受け取る値の数が決まっているのであれば

<a href="hogehoge.php?a=30&b=40">login</a>
という形にリンクを造り
hogehoge.phpで
<?

echo $_GET['a']."<BR>\n";
echo $_GET['b']."<BR>\n";

?>

とすればGETメソッドで投げられた引数を
$_GET[リンク時に設定した変数名]で引数が取得できます。

取得した引数は正規表現などでチェックしないと
思わぬセキュリティーホールを造ってしまったりして危険ですので
気を付けて下さい。
例えば数字のみの入力を許したいなら
if(!ereg("^[0-9]*$",評価する変数)) die("不正な引数が含まれています。");
とエラー終了させることができます。

hogehoge.phpで値を受け取りたいということでしょうか。
それでしたら

引数の数が決まっていないのでしたら
<a href="hogehoge.php?30,60…">login</a>
という形にリンクを造り
hogehoge.phpで
<?
//explode関数は「,」で区切り順番に配列に格納する
//$_SERVER['QUERY_STRING']はURLの?の後に付けられた
//文字列(引数)を取得できます。

$intArray = explode(",",$_SERVER['QUERY_STRING']);


print_r($intArray); //変数の内容を表示します
?>

とすれば変数$intArrayに配列で投げ込まれ...
続きを読む

Qリンクをクリックした時にformからPOST送信したい。

HTML、PHP、JavaScript等でサイトを作っているのですが・・・。

【実現出来ている例】
<form name="form1" method="post" action="Next.php" onSubmit="return InputCheck()">
 <input type="submit" value="送信">
</form>
 submitボタンを一つ置いて、それがクリックされた場合に
formの内容をPOSTで送信する。

【実現したい例】
<form name="form1 method="post">
 <a href="Next.php" onClick="???">???</a>
</form>
 formの中のリンクをクリックされた場合に、formの内容を
POSTで送信したいのですが、その実現方法がわかりません。
GETで送るという手もあり得ますが、今回はどうしてもPOST
したいのですが。

Aベストアンサー

<form name="form1" method="post" action="Next.php">
<a href="#" onClick="document.form1.submit();">???</a>
</form>

onclick内の対象がform1としてあてているので、
アンカータグは別にform内に記述しなくても大丈夫です

form内にhidden等でnameとvalueを持ったパラメータがあればそれも送られます

アンカータグから動的にvalueを変更したい場合は、
document.form1.hogename.value = 'hoge';
等をsubmit()の前に行えば可能です

ただしform内に
<input type="hidden" name="hogename" value="">
を記述する等、変更先パラメータの元を用意する必要がありますのでご注意下さい

QPOSTで

POSTで
<a href=sample.cgi?md=aa&tx=zz~>hoge</a>
<a href=sample.cgi?md=bb&tx=yy~>hoge2</a>
<a href=sample.cgi?md=cc&tx=xx~>hoge3</a>
<a href=sample.cgi?md=dd&tx=ww~>hoge4</a>

を送る方法でjavascriptとの組み合わせで出来るのかな?
と思い検索したら

<form action="./sample.cgi" method="POST" name="post">
<input type="hidden" name="md" value="aa">
<input type="hidden" name="tx" value="zz">
          :
<a href='#' onClick="document.post.submit();return false">hoge</a>
<form action="./sample.cgi" method="POST" name="post2">
<input type="hidden" name="md" value="bb">
<input type="hidden" name="tx" value="yy">
          :
<a href='#' onClick="document.post2.submit();return false">hoge2</a>

このような手法が見つかりました
これだと行数が多くなり、なんとなくすっきりしません
どなたかいい解決方法を教えてください
よろしくお願いします

POSTで
<a href=sample.cgi?md=aa&tx=zz~>hoge</a>
<a href=sample.cgi?md=bb&tx=yy~>hoge2</a>
<a href=sample.cgi?md=cc&tx=xx~>hoge3</a>
<a href=sample.cgi?md=dd&tx=ww~>hoge4</a>

を送る方法でjavascriptとの組み合わせで出来るのかな?
と思い検索したら

<form action="./sample.cgi" method="POST" name="post">
<input type="hidden" name="md" value="aa">
<input type="hidden" name="tx" value="zz">
          :
<a href='#' onClick="document.post.submit();return...
続きを読む

Aベストアンサー

JavaScriptオフの場合を考えないなら、このように書けます。


<!-- フォーム -->
<form action="sample.cgi" method="post" name="form1">
<input type="hidden" name="md">
<input type="hidden" name="tx">
</form>


<!-- スクリプト -->
<script type="text/javascript"><!--
function Post(md, tx) {
  form1.md.value = md;
  form1.tx.value = tx;
  form1.submit();
}
//--></script>


<!-- リンク -->
<a href="javascript:Post('aa', 'zz')">hoge</a>
<a href="javascript:Post('bb', 'yy')">hoge2</a>

QJSPでリンクを利用してパラメータを次画面に渡す方法について。

一覧表示されているデータのNOをクリックすると、二つのパラメータでデータベースへアクセスし、該当データの詳細画面に遷移する、というプログラムを作っています。

データベースへアクセスする際に必要なIDは2つで、仮にID_A、ID_Bとします。
リンク部分のソースは

---------------------------------------------------------------------
<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>">番号</a>
<input type="hidden" name="ID_B" value="<%= rs.getString("ID_Bcat_id") %>">
---------------------------------------------------------------------

としておりますが、次画面へ遷移すると、ID_Bの値はnullとなってしまうために、正常にデータの取得ができません。

二つのパラメータを使用する場合のパラメータを渡す方法を教えて頂きたいと思います。よろしくお願いします。

一覧表示されているデータのNOをクリックすると、二つのパラメータでデータベースへアクセスし、該当データの詳細画面に遷移する、というプログラムを作っています。

データベースへアクセスする際に必要なIDは2つで、仮にID_A、ID_Bとします。
リンク部分のソースは

---------------------------------------------------------------------
<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>">番号</a>
<input type="hidden" name="ID_B" value="<%= rs.getString("ID_Bcat_id") %>">...続きを読む

Aベストアンサー

<a href = "update_form.jsp?ID_A=<%= rs.getString("ID_A") %>&ID_B=<%= rs.getString("ID_Bcat_id") %>">番号</a>

としてID_Bを&で繋げればMethod="get"で送れますね。
inputタグで送る場合はformタグでactionアトリビュートに飛ぶjspを指定してsubmitボタンかJavaScriptでsubmitさせなければならないと思います。

Qa href="..." とServlet

HTMLファイルに以下のタグを書きました。
<A HREF="http://localhost:8080/.../servlet/test">ここ</A>

上記の「ここ」を押すと、test.javaのdoPost()ではなく、doGet()が
呼ばれるんですか?よく分からなくなってきました(x_x;)
わたしの作ったプログラムはdoPost()しか再定義していませんので、動きませんでした。(後でdoGet()を再定義したら動いたんですが)
ちなみに、IEでアドレスとして"http://localhost:8080/.../servlet/test"
を指定したら、doGet()なしで動きました。ここではdoPost()が呼ばれてるということですよね。。?
どうしてでしょうか?教えて下さい。

Aベストアンサー

私はいつも、全てのサーブレットの親クラスにこんな定義をしておきます。
いちいち、これはGetかPostか?って考えるの大変ですもんね。
こうすると、親クラスのperfomTask()で、セッション関連の共通処理とかを書いておけるし、親クラスにlog排出処理のメソッド作っておけば、全サーブレットで使えますし。

//親クラスの定義
public void doGet(HttpServletRequest req,HttpServletResponse){
performTask(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse){
performTask(req,res);
}
protected void performTask(HttpServletRequest req,HttpServletResponse){
perfomTask0(req,res);
}

子クラスの定義
protected void performTask0(HttpServletRequest req,HttpServletResponse){
//処理記述
}

私はいつも、全てのサーブレットの親クラスにこんな定義をしておきます。
いちいち、これはGetかPostか?って考えるの大変ですもんね。
こうすると、親クラスのperfomTask()で、セッション関連の共通処理とかを書いておけるし、親クラスにlog排出処理のメソッド作っておけば、全サーブレットで使えますし。

//親クラスの定義
public void doGet(HttpServletRequest req,HttpServletResponse){
performTask(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse){
performTask(...続きを読む

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

Qhtml で 変数を定義できますか?

html(できればjava不使用)で変数に文字列をいれてつかう、またはそれに近いことはできないでしょうか?

例**************************
$color1="#000000"

<tr bgcolor=$color1>内容1<tr>
<tr bgcolor=$color1>内容2<tr>
****************************
みたいな感じです

Aベストアンサー

調べりゃ分かることは???だけど。

CSS2で無理やり作れば・・簡単だけど・・・
生成内容、自動番号振り、リスト ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/generate.html )
 本来はXSLTで作るほうがよいかと・・・
 <th><xsl:value-of select="parson" />の歌</th>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>サンプル</title>
<meta name="author" content="ORUKA1951">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rev="made" href="mailto:orika1951@hoge.com" title="send a mail" >
<link rel="START" href="../index.html">
<style type="text/css">
<!--
.parson1:before{content:"田中";}
p.age1:after{content:"36歳";}
-->
</style>
</head>
<body>
<h1>サンプル</h1>
<p class="parson1">は男の子</p>
<p class="parson1 age1">の年齢は</p>
<p>私の彼氏は<span class="parson1">君だよ</p>
</body>
</html>

調べりゃ分かることは???だけど。

CSS2で無理やり作れば・・簡単だけど・・・
生成内容、自動番号振り、リスト ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/generate.html )
 本来はXSLTで作るほうがよいかと・・・
 <th><xsl:value-of select="parson" />の歌</th>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>サンプル</title>
<met...続きを読む

Qservletからjspへオブジェクトの配列情報を送る方法

いつもお世話になっております。echo2002です。

さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか?
”servletで作成したオブジェクトの配列をjspにforwardして表示させる”

こんなような処理を考えています。

構成:FileListServletクラス, FileInfomationクラス, disp.jsp

FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、
それぞれgetなどのアクセサメソッドを持つとします。

FileListServletクラスでの処理
FileInfomationクラスの配列を作成し、各情報をsetする。
HttpServletRequestにsetAttributeでFileInfomation情報を付加し、
disp.jspへforwardする。

※以下の方法を考えています。
request.setAttribute("fileinfo1", fileinfo[0]);
request.setAttribute("fileinfo2", fileinfo[1]);
request.setAttribute("fileinfo3", fileinfo[2]);
・・・
(配列でsetAttributeできるのかわからなかったので、
 とにかくファイルの数分setAttributeしてみました)

getServletContext().getRequestDispatcher("/disp.jsp").forward(req, res)

わからないこと:
disp.jspでどのようにFileInfomationの情報を取得し、
内容を参照できるのかがよくわからないのです。
jspの暗黙オブジェクトrequestを使用して、request.getParameterをすると、
返ってくる値がStringのようなので、FileInfomationクラスにならないんですよね?

突っ込みどころ満載の質問かと思いますが、何かアドバイス頂ければと思います。
オブジェクトの配列をsetAttributeしてjspで読み出せる方法があれば、
それもご教授いただけますでしょうか。
よろしくお願いいたします。jsp難しいです・・・。

いつもお世話になっております。echo2002です。

さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか?
”servletで作成したオブジェクトの配列をjspにforwardして表示させる”

こんなような処理を考えています。

構成:FileListServletクラス, FileInfomationクラス, disp.jsp

FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、
それぞれgetなどのアクセサメソッドを持つとします。

FileListServletクラスでの処理
FileInfomationクラスの配列を作成し、...続きを読む

Aベストアンサー

setなんちゃらメソッドで値を設定したら、getなんちゃらメソッドを呼べば良かったのです。つまり、set/get以下が同名のメソッド同士をセットで使えば良いのです。
今回の場合は、getAttributeメソッドですね。
戻り値はObjectですがこれはキャストすれば良いのです。
FileInfomation 変数 = (FileInfomation)request.getAttribute("fileinfo1");
てな具合です。

なお、getParameterメソッドは、クライアント(ブラウザ)から送信されたパラメータを取得するメソッドです。

さて、話を次の段階に進めて、配列を受け渡しできるか?となりますが、、できます。
サーブレット側で、
request.setAttribute("キー文字列", fileinfo);
として、JSP側で、
FileInfomation[] 変数 = (FileInfomation[])request.getAttribute("キー文字列");
とすれば、良いのです。

QHTMLフォームのSELECTの幅を一定にするためには?

HTMLフォームのSELECTの幅を一定にするためにはどのようにすれば
いいのでしょうか?

CSS等で設定できるとありがたいのですが、やり方がわかりません。

Aベストアンサー

<select style="width: 200px">


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング