アプリ版:「スタンプのみでお礼する」機能のリリースについて

selectboxを選択したときに、画面遷移してpostで変数を受け渡しできるようにしたいです。
下記のように作成し、画面遷移するのですが、postでデータを受け取ることができていません。
どなたか教えていただけると助かります。
よろしくお願いします。

<script type="text/javascript"><!--
function post(num){
obj = document.test.select;
href = obj.options[index].value;
document.test.num.value=num;
location.href = href;
}
//--></script>

<form name="test" method="post">
<select name="select" onChange="post('126')">
<option value="http://test/aaa.html">aaa</option>
<option value="http://test/bbb.html">bbb</option>
</select>
<input type="hidden" name="id" value="">
</form>

A 回答 (2件)

なんか全体的にぐだぐだですね



そもそもの原因はocation.href ではpostは送れません
formをsubmitしてください

そのた問題点
・予約語を多用しているのでどこかで競合が発生する可能性がある
 (関数名にpostや要素名にselect、idなど使わない方が無難)
・testフォームにnumという要素がないのに代入している
・selectセレクトボックスに初期値aaaが設定されているが
 aaaを選びたいときどうするの?
・とうとつに脈絡のないindexという変数をつかっている
・submitのないformはUIとして問題
・selectをonchangeで処理するとキーボードで変更するとき
 目的の値にたどりつけない場合がある

そのたもろもろ・・・
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます!
location.hrefではpostできないんですね!
まずそこからでした・・・初歩的な理解不足ですいません。
その他問題点も挙げていただきありがとうございます!
とても参考になります!!!
この度は本当にありがとうございました。
非常に助かりました。

お礼日時:2015/03/05 19:40

意図がよくわからないのと、ご提示のスクリプトとHTMLが整合していないので、混乱するけれど・・・



要は"126"というデータを送りたいけれど、送れていないという意味でいいのかしら?
指定アドレスに遷移するようですから、submitするようにしてしまえばいいのでは?
(遷移しないのならajaxを利用)


…ってことで、いろいろと推測混じりですが、こんなんでどうでしょう?
function post(num){

var frm = document.forms["test"],
elms = frm.elements;

elms["id"].value = num;
frm.action = elms["select"].value;
frm.submit();

}


※受け取る側がHTMLの場合は、cookieやWeb Storageを利用するのがよろしいかと。
 (クロスドメインではうまくいきませんが…)
    • good
    • 0
この回答へのお礼

おおお!まさにそのとおりです!
色々推測していただきありがとうございます!
組み込んでみたところ、期待通りの動きとなりました!
助かりました!本当にありがとうございました!
こちらの回答がピンポイントで欲しい情報でしたので、ベストアンサーとさせていただきました。

お礼日時:2015/03/05 19:38

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