- ベストアンサー
JavaScriptのURLパラメータから変数を取得する方法
- JavaScriptを使用して、URLのパラメータから変数を取得する方法についての質問です。
- 質問者は、自分のURLアドレスのパラメータを取得して変数として使用したいと考えています。
- 現在は、JavaScriptでパラメータを取得できているが、他の場所で変数の値を使用できないという問題があるとのことです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
②「<% call prog1(P_hensu) %>」について この命令はサーバーの中で実行している? 済みません、未熟なのでどちらか解かりません。 ーーーーーーーーーーーーーーーーーーーーーーーー 恐らく、この「解りません」こそが、この質問の 答えになると思います。 他のサーバーサイド言語でも同じ質問をしている方は多く。 サーバーサイド側で処理が「終わった後」 クライアントサイド側でJavaScriptなどを実行している。 の流れをミスすると、ドツボだったりします。 PHPでの例ですが。 $hensu=50; JavaScript var abc=<?php echo $hensu; ?>; と書くと、クライアントには、 JavaScript var abc=50; とサーバー側で「展開済みの状態」を送り出し JavaScriptはそれを実行しているにすぎないので、 ASP命令と共存はしていないんです。 なので、 >未熟なのでどちらか解かりません。 これの試し方は、 変数=何かを代入しておく! JavaScript内に、 console.log ( その変数 ); のように扱い、その時の、ソース(例えばChromeならF12など) でJavaScriptが計算したのか?ASPが置き換えを実行していたのか? が判定できます。 で、治し方は、最初の回答通り クエリーストリングをASP側で受け取れば治ると思います。 ちなみ、ポストストリングというものもあり、 form method=get form method=post この違いです。(ほかにもあるが、今はその他は省略) getにした時、クエリーストリングで、 postで、ポストストリングです。 ただ、action=abc.asp?waa=yay method=post なら、両方同時になります。 などを組み合わせれば、面白いものが作れるとは思います。 サーバーの設定が一部必要になりますが。 abc.aspをショートネーム登録してしまい、 abcとすると。。 abc/def/ghi?waa=yay post. PathInfoには、"/def/ghi" (abc.aspに渡したパラメータとして機能する) Getには、"waa=yay" Postには、そのPOSTで使ったINPUTタグなどの値。 と3種類の値が同時に渡せて、色々遊べますよ!。 最後に、、、ASPは私は使ったことがないのですが、 これからもあまり使いたいとは感じていないので、 PHPなどを勉強してみると、結果的にASPでの 今回何がまずかったか?がわかるかもしれません。 (別にPHPに誘導したいわけじゃないので、好みですけど!) って所ですかね! (呑み屋の爺が暇つぶしにプログラムしてる程度なので、あんまり詳しく教えられなくてごめんね)
その他の回答 (1)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
この言語(ASP)をわかってないので的外れならごめんね! <script type="text/javascript"> ~ここを実行してるのはブラウザでは?~ </script> そして、この命令はサーバーの中で実行してるのでは? call prog1(P_hensu) なので、未来にブラウザが実行した結果を 送り出す段階のASP命令が受け取れてないってだけでは? それで、 bbb.asp?PARM1="hensu" これは、クエリーストリングというパラメーターなので、 ASPにある、クエリーストリングを取得する関数に 置き換えれば、うまくいくと思うのですが。 ただ、サーブレットスタイルのJavaScriptもあり得るので、 この言語がどうやって実行してるのか? (つまり何がサーバーサイドで、何がクライアントサイドか?)が 私の方には見えてないので、判断ができませんが。 そんだけで、治る気がします。 ただし、この言語はわからないので、クエリーの取得関数で 調べてみてもらえたらと思いますが。
補足
AsarKingChang様 早々のご回答ありがとうございました。 ①ご回答内での「この言語(ASP)~」について ご推察通り、MicrosoftのWebサーバー(IIS)用ブラウザ言語で拡張子.htmlと同じようなものです。 ですので、javascriptはブラウザ内で実行しています。 ②「<% call prog1(P_hensu) %>」について この命令はサーバーの中で実行している? 済みません、未熟なのでどちらか解かりません。 ※ご教示頂いた「ASPにある、クエリーストリングを取得する関数」について 調べてみます。 お忙しい所、ご丁寧な回答を頂き感謝いたします。 今後とも宜しくお願い致します。
お礼
AsarKingChang様、 この度は貴重なアドバイスどうもありがとうございました。 お蔭様で解決できました。 javascriptで取得したURLパラメータは使えないようなのでそっくり削除しました。 代わりにご教示の通り、クエリーストリングで取得したら出来ました。 P_hensu = Request.QueryString("PARM1") call prog1(P_hensu) 感謝!今後ともよろしくお願いいたします。