痔になりやすい生活習慣とは?

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>

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

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

var とは」に関するQ&A: varとは

A 回答 (3件)

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>
    • good
    • 2
この回答へのお礼

回答ありがとうございます
これは良いですね、すっきりしてますし
編集も楽そうです
JavaScriptオフの場合を考えていないので
(自分だけ使う予定なので)
まったく問題ありません


# JavaScriptを勉強しなければ・・・・・

お礼日時:2003/11/20 09:48

単にテキストリンクに見せかけたいだけであれば、



 画像のようなテキスト
  ※テキストが記述された画像

を使うという手段があります。
これなら、

<FORM method="POST">

<INPUT type="image" src="text.gif" alt="リンク風Submit">
</FORM>

という感じでOKです。
JavaScript未対応のブラウザへの配慮もいりません。

#ちょくちょく仕事で使ってます、この技(^^;
    • good
    • 1
この回答へのお礼

回答ありがとうございます
JavaScript未対応を気にせずやれる方法ですね
ただ、テキストリンクに見せかけたい
・・・ってわけではないので(^^;

今後の参考にさせていただきます

お礼日時:2003/11/20 09:42

FORMは1つにして、リンクの onClick で各 hidden の value を埋めればよいと思います。



# フォーム部
<form action="sample.cgi" method="post" name="post">
<input type="hidden" name="md">
<input type="hidden" name="tx">
  :
</form>

# リンク部
<a href="sample.cgi?md=aa&tx=zz~" onClick="return myPost(this)">hoge</a>
<a href="sample.cgi?md=bb&tx=yy~" onClick="return myPost(this)">hoge2</a>
<a href="sample.cgi?md=cc&tx=xx~" onClick="return myPost(this)">hoge3</a>
<a href="sample.cgi?md=dd&tx=ww~" onClick="return myPost(this)">hoge4</a>

# 送信スクリプト
<script type="text/javascript"><!--
function myPost(a) {
  var query = a.href.substring(a.href.indexOf("?")+1);
  while (query) {
    var p1 = query.indexOf("=");
    var p2 = query.indexOf("&");
    if (p2 == -1) p2 = query.length;
    var key = query.substring(0, p1);
    var val = query.substring(p1+1, p2);
    document.post[key].value = val;
    query = query.substring(p2+1);
  }
  document.post.submit();
  return false;
}
//--></script>
※全角スペースを使っているので、コピーする際は半角スペースかタブに変換してください。

ちなみにこの方法だと、JavaScript がオフの環境では GET で(通常のリンクとして)飛びます。

JavaScript オフの人には実行させたくない場合、リンク内の
  return myPost(this)
の this の部分を "md=aa&tx=zz~" のようにクエリ文字列にし、myPost 関数の方は
  function myPost(query) {
として
  var query = a.href.substring(a.href.indexOf("?")+1);
の部分を削除してください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます
=と&を分割してやるんですね
なるほど、参考になりました

お礼日時:2003/11/20 09:38

この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>

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="">
を記述する等、変更先パラメータの元を用意する必要がありますのでご注意下さい

QテキストリンクをPOST送信したい

「自由に入力できる任意の値」ではなく、「常に固定な値」をPOST送信するにはどうすればよいでしょうか?

■現状
<a href="index.php?hoge=1">hoge</a>
・テキストリンク形式
・このままだと、GET送信で、URLにパラメータが表示されてしまう。
 ↓
■やりたいこと
・URLにパラメータを表示させたくない
・クリックした時点で、常に「hoge=1」をパラメータとして送りたい

■知りたいこと
・遷移前(パラメータを送る側のページ)の書き方を教えてください

Aベストアンサー

デザインとしてボタンを嫌う場合に良くつかわれるのが下記方法です。
普通にFORMを組んで、SUBMITボタンではなくテキストリンクでSUBMITするだけです

<FORM NAME="form" METHOD="POST" ACTION="index.php">
<A HREF="javascript:document.form.submit()">SUBMIT</A>
<input type="hidden" name="hoge" value="1">
</FORM>

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させなければならないと思います。

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】 リンク文字で submit したい

<FORM METHOD="post" ACTION="tbl_admin.html">
<A HREF="#" onClick="fnc.value='abc'; this.form.submit();">リンク文字</A><BR><BR>
<INPUT TYPE="hidden" NAME="fnc" VALUE="">
<INPUT TYPE="submit" VALUE="aaa">
</FORM>

と書いてみたのですが
エラー:'this.form' は Null またはオブジェクトではありません。
としまいました。
<SELECT>のonChangeで同じような事は出来たのですが、
単なるリンク文字クリックでこのようなことはできないのでしょうか。

可否をご存知の方、また実現方法等ご存知の方
いらっしゃいましたらご教示願います。
よろしくお願い致します。

Aベストアンサー

#1さんの補足ですが、アンカー(a)要素はformの中に入れても
従属関係にはないので上位のformにアクセスすることはできません。
#1さんの解説ではformにformという名前をつけていますが、
場合によっては名前の競合が発生するのでなるべくタグ名と
同じ名前を使わない方がよいでしょう。
また、allでアクセスするのはあまりお勧めできませんので、
やるならdocument.forms[フォーム名]もしくはdocument.フォーム名
でやるか、nameではなくidをつかってdocument.getElementById(id名)
でやるとよいでしょう。

<FORM METHOD="post" ACTION="tbl_admin.html" name="form1">
<A HREF="#" onClick="f=document.form1;f.fnc.value='abc'; f.submit();">リンク文字</A><BR><BR>
<INPUT TYPE="hidden" NAME="fnc" VALUE="">
<INPUT TYPE="submit" VALUE="aaa">
</FORM>

#1さんの補足ですが、アンカー(a)要素はformの中に入れても
従属関係にはないので上位のformにアクセスすることはできません。
#1さんの解説ではformにformという名前をつけていますが、
場合によっては名前の競合が発生するのでなるべくタグ名と
同じ名前を使わない方がよいでしょう。
また、allでアクセスするのはあまりお勧めできませんので、
やるならdocument.forms[フォーム名]もしくはdocument.フォーム名
でやるか、nameではなくidをつかってdocument.getElementById(id名)
でやるとよいでし...続きを読む

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

QformでPOSTするのと同じ動作をボタンとjavascriptで実現したいのですが

<form name="myFORM" method="POST" action="xxx.php">
<input type="text" name="NAME">
<input type="submit" value="送信">
</form>
上記と同じ動作を
<button onclick="fpost('tanaka','POST','xxx.php')">送信</button>
とjavascriptで実現したいのですが可能でしょうか?
可能でしたらどのようなスクリプトになりますでしょうか?
document.myFORM.submit();とかではなく、formタグを全く使わずPOSTしページ遷移したいのですが。
XMLHttpRequestとlocation.replace()とかでできるのでしょうか??
すみませんがよろしくお願い致します。

Aベストアンサー

削除に関しては各行でform処理をするとして、更新の方は
各行のデータを総なめして更新するようなものになるのでしょうか・・・

DOMに関しては、こんな風にしてやると汎用性があがります。
<script>
function hoge(){
var f=document.getElementById("f0")
if(f) f.parentNode.removeChild(f);
var f = document.createElement("form");
f.setAttribute("action","***.php");
f.setAttribute("method","get");
f.setAttribute("id","f0");
f.style.display="none";
var i = document.createElement("input");
i.setAttribute("name","fuga");
i.setAttribute("value","xxx");
f.appendChild(i);
var i = document.createElement("input");
i.setAttribute("name","piyo");
i.setAttribute("value","yyy");
f.appendChild(i);
document.getElementsByTagName("body")[0].appendChild(f);
f.submit();
}
</script>
<input type="button" value="test" onClick="hoge()">

削除に関しては各行でform処理をするとして、更新の方は
各行のデータを総なめして更新するようなものになるのでしょうか・・・

DOMに関しては、こんな風にしてやると汎用性があがります。
<script>
function hoge(){
var f=document.getElementById("f0")
if(f) f.parentNode.removeChild(f);
var f = document.createElement("form");
f.setAttribute("action","***.php");
f.setAttribute("method","get");
f.setAttribute("id","f0");
f.style.display="none";
var i = documen...続きを読む

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(...続きを読む

Qフォームで同じ複数のnameで違うvalueの送信

始めまして、現在一個のフォーム内で複数の同じnameで、違うvalueを送信しようと苦戦しております、、普通にタグを書くだけでは
一個のnameで違うvalueの送信は、最後のvalueしか送信できないです、
phpは使用できません。javaは、、殆ど素人なので、あまり分かりません、、formを一個一個区切るのも、レイアウト上できません、、
どうすればいいのでしょうか?・・・以下タグです。
昨日から、ここから先に進めません。。
先輩方助けてください、本当によろしくお願いします。

<form action="http://hoge.net/hoge/hogecheck.php" method="post">
<input type="hidden" name="site" value="hoge">
<input name="id" type="text" id="idform" maxlength="10" />

<input type="hidden" name="kin" value="3000">
<input type="image" src="buybtn.gif" />
<input type="hidden" name="kin" value="5000">
<input type="image" src="buybtn.gif" />
<input type="hidden" name="kin" value="10000">
<input type="image" src="buybtn.gif" />
<input type="hidden" name="kin" value="20000">
<input type="image" src="buybtn.gif" />

</form>

始めまして、現在一個のフォーム内で複数の同じnameで、違うvalueを送信しようと苦戦しております、、普通にタグを書くだけでは
一個のnameで違うvalueの送信は、最後のvalueしか送信できないです、
phpは使用できません。javaは、、殆ど素人なので、あまり分かりません、、formを一個一個区切るのも、レイアウト上できません、、
どうすればいいのでしょうか?・・・以下タグです。
昨日から、ここから先に進めません。。
先輩方助けてください、本当によろしくお願いします。

<form action="http://hoge...続きを読む

Aベストアンサー

No.2の回答者です。
スミマセンm(__)m、Javaでしたね。PHPで書いてしまいました。。。

Java だったらこれで取れます。(HTML側の修正は不要です。)
String[] kin= req.getParameterValues("kin");


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

人気Q&Aランキング