- - PR -
JavaScriptでセットした値がSubmitするとなくなる
投稿者 | 投稿内容 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-03-01 16:09
「サーバコントロールとして実行」にチェックをつけたり、 はずしたりしたのですが、JavaScriptでデータをセットすることは出来ませんでした。 またチェックをつけた状態ではサーバサイドでデータをセットすることは出来ました。 #この場合のサーバサイドってのはC#で値をセットってことでOKですよね? | ||||||||||||||||||||||||||||
|
投稿日時: 2004-03-01 16:15
>msoさん
実現したいのは「HTMLページ→ASPXページ」「ASPXページ→同じASPXページ」 どちらでしょうか?(根本は同じですが) 「ASPXページ→違うASPXページ」ではないですよね? 私のところで、msoさんが最初に提示したソースを少し変えて実験してみましたが、 「HTMLページ→ASPXページ」「ASPXページ→同じASPXページ」どちらの場合でも Request.Param["test_1"]で値が[a]になっています。「HTMLページ→ASPXページ」は Fromにactionを設定しただけです。「ASPXページ→同じASPXページ」はVS.NETで 自動生成された状態から<script>の内側と<form>の内側をコピペしました。 中ほどの例でhiddenのvalueに[test]と設定しているのはhtmlソース上で行って いるのですよね? Request.Paramがあるまさにその行でブレークしてみてもだめですか? 追記:IE6で実験しました [ メッセージ編集済み 編集者: べる 編集日時 2004-03-01 16:43 ] | ||||||||||||||||||||||||||||
|
投稿日時: 2004-03-01 16:40
セットだけでなく、取得もできます。 例えば、<input type="hidden" runat="server" id="hdnInput">とすると、サーバ側ではSystem.Web.UI.HtmlControls.HtmlInputHiddenだったかな?のクラスで、hdnInputが作成されます。Loadイベントハンドラ内で、これに値が返ってきていると思うのですが、確認してみてください。 | ||||||||||||||||||||||||||||
|
投稿日時: 2004-03-01 16:56
ども、ほむらです。
------- mso氏へ
あっごめんなさい。誤解を招く書き方だったようですね^^;; ここでいいたかったのは、書き直しということを言いたかったのです。 書き直すと同じはずのコードが動いたりもしますし(笑 >実際にはURLは http://url?a=A というようになっていました。 実はこの時点でおかしいですよね。
やってもらうとわかると思いますが空白であってもQueryStringは送信されるはずです。 (hiddenならばの話) 代入とalert()の部分だけでもソース載せることができませんか? あと、ブラウザはIEでよいのでしょうか?.NETだし。。。 エラーとか出ていてスクリプトが途中で止まってませんか? IDは重複とかしてませんよね? | ||||||||||||||||||||||||||||
|
投稿日時: 2004-03-01 17:00
msoです。
私が実現したいのは 「ASPXページ→同じASPXページ」 の動作です。
中ほどの例はhtmlのソースで実行しています。 また、Request.Paramがあるその行でブレークしているのですが、 中身は空のままです。 (思いつきですし、まだ実験していません) あまり知らないなりにちょっと推測をしてみました。 何かおかしいところなどがあれば指摘してください。 今回、SubmitしてもRequest.Paramsに出てこないのは PostBackが動作しているためRequest.Paramsのデータが 変わらないから。 なので、全体の動きを気にしないという前提であれば、 すべてのタグからrunat="server"を出来るだけはずして 実行するとRequest.ParamsのところでPostBack以外のところから データを取得できるのではないか? ただ、runat="server"をはずしたときの影響は現状わからず。 (かなり甚大と予想) 実験したほうがいいのかなぁ。 ほかの方法を探そうかなぁ。 | ||||||||||||||||||||||||||||
|
投稿日時: 2004-03-01 17:13
msoです。
なるほど。。。。 確かにおっしゃるとおりです。 そういうことありますね。 書き直し・・・・(汗
そうなんですよね。 空でもQueryStringが出てくるはずと認識しているのに、 出てこないのがすごく気になっています。 ひょっとしてフレームの中でSubmitさせているから、 フレームをコールしたときのQueryStringをずっと使っているのかなぁ・・・? #すいません、もっと早く言えばよかったのに黙っていました。
・変数の名前を変更 ・ちょっと代入している変数の数をちょっと削除 上の二つをやっていますが、あとはそのまんまです。 代入をして、そのままAlertさせています。 代入&Alertの部分
ブラウザはIE6.0を使っています。 JavaScriptのエラーなどは出ていません。 IDの重複もないです。 | ||||||||||||||||||||||||||||
|
投稿日時: 2004-03-01 17:55
ポストバックデータとして受け取れているのに、リクエストには上がっていない、ということ? | ||||||||||||||||||||||||||||
|
投稿日時: 2004-03-01 17:58
ほむらです。
-------- 原因発覚した模様。。。 大文字小文字区別するので注意。 >document.all['test001'].Value = unescape(window.dialogArguments[0]); Valueではなくてvalueです。 エラーにならないのはValueという新しいプロパティが暗黙的に作成されているためです。 確認方法としてhiddenではなくてtextにするとわかります。 値が書き換わらないはずです。 #うそついていたらごめんなさい。 #以下追記 #仮に、僕の予想があっていたとしてなぜQueryStringには含まれなかったのだろう。 #test001=の形くらいは入るはずなのに。 [ メッセージ編集済み 編集者: ほむら 編集日時 2004-03-01 18:03 ] |