質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

4回答

514閲覧

フォームのGET送信時にコロン等をそのまま入れたい

coinbura

総合スコア106

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2019/03/26 19:23

編集2019/03/27 06:33

以下のようなコードがあります。

<form name="myform" method="get" action="https://example.com" target="_blank"> <select name="hoge"> <option value="a:123&aaa=bbb">あああ</option> <option value="b:234&ccc=ddd">いいい</option> </select> <input value="遷移" type="submit">

この時、「あああ」を選んで「遷移」ボタンを押すと、
https://example.com/?hoge=a%3A123%26aaa%3Dbbb
と変換されてしまいます。
これを
https://example.com?hoge=a:123&aaa=bbb
と変換させずに遷移する方法はないものでしょうか。

GETで投げる先(https://example.com)は他社サーバーのいじれません。
このコードを置いたサーバー内で解決したいです。

ご教授いただければ幸いです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

この変換は、「URLエンコード」または「パーセントエンコーディング」と呼ばれています。

URL に使用できる文字が決まっているため、このように変換することになっています。
URLエンコードされた文字は、「URLデコード」で元に戻して使うことができます。

投稿2019/03/26 21:34

nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coinbura

2019/03/26 23:51

ご回答ありがとうございます。 その「URLデコード」された状態、もしくは「URLエンコード」されない状態でURLを取得して、ページ遷移させる事は可能なのでしょうか。
nskydiving

2019/03/26 23:55

できません。 そのためのURLエンコードです。
otn

2019/03/27 00:18

> その「URLデコード」された状態、もしくは「URLエンコード」されない状態でURLを取得して、ページ遷移させる事は可能なのでしょうか。 「取得して」と「ページ遷移させる」の主語が不明(サーバーサイド?ブラウザのJavaScript?)で、質問の意味が厳密に理解できていない前提で回答すると、URLデコードされたURLで遷移させる事は可能です。
coinbura

2019/03/27 00:24

質問がうまくできず申し訳ございません。 「サーバーサイド?ブラウザのJavaScript?」というのをどうやって応えたら良いのか知識不足でよく分からないのですが、やりたい事は、「フォームボタンを押した後に遷移するページのURLが、URLデコードされた状態かURLエンコードされていない状態で、引数を元のまま(valueの値のまま)受け取れる」ようにする事です。
otn

2019/03/27 00:29

nskydivingさんの回答を理解した上での質問でしょうか?理解できない状態での質問でしょうか? お書きのHTMLだとボタンを押せばValueは自動的にURLエンコードされて、サーバーに送信され、サーバー側のプログラムでデコードすれば、Value値のまま受け取れますというのが、回答ですが。
coinbura

2019/03/27 05:25

なぜできないのかは理解できておりません。 今回、GETで投げる先が他社サーバーの為、このコードを置いたサーバー内で解決しようと思うのですが、「ボタンを押した時に自サーバー内でPHPを走らせてデコードすればValue値のまま受け取れる」という解釈で正解でしょうか?
otn

2019/03/27 06:52

自社も他社も関係無いです。
guest

0

https://example.com?g\%3A123%26aaa%3Dbbb

これは
https://example.com?hoge=g\%3A123%26aaa%3Dbbb
ですよね?

は根本的に渡す内容が違います
前者はhogeに「g:123」、aaaに「bbb」の2つのパラメータを渡して
いるのに対して、後者はhogeに「g:123&aaa=bbb」というデータを
渡すための処理です。

処理が違うのですから、ご提示のselectboxではご希望の操作はできません
(そもそも値とパラメータを一緒におくろうという趣旨がわかりません)

一度に2つのデータを渡したいならjson型でデータをもつのが現実的でしょう

投稿2019/03/27 00:30

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coinbura

2019/03/27 05:14

表記ミス並びに説明不足すみません。 今回、hogeの値が決定すれば、もう1方のパラメータと値が決まるという特殊なケースだったので、このような形をとってみました。 JSON型というのでGET送信すれば現実的なのですね! ちょっと調べてみます!
guest

0

自己解決

一度、同ファイルへGETを投げてPHPで処理する事で解決しました。

投稿2019/03/27 08:46

coinbura

総合スコア106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

GETリクエストなので、JavaScriptを使ってよければ、

js

1document.myform.addEventListener('submit',e=>{ 2 e.preventDefault(); 3 location.href = e.target.action+'?'+e.target.hoge.value; 4});

のように普通にページ移動をしてしまうのも手かなあ、と思います。
この場合、他のフォーム部品によるパラメータは反映されないので、そこも何とかしたいなら手を加える必要があります。

投稿2019/03/27 07:08

Lhankor_Mhy

総合スコア35860

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問