2012-01-27 14 views
2

ハイパーリンクとして表示されるURLのクエリパラメータをどのようにエンコードできますか。そのようなハイパーリンクのクライアント側URLハイパーリンク内のクエリパラメータのエンコーディング

例:

<a href="http://site/page.html?param1=value1&param2=value2">MyPage</a> 

私はので、これを行うには、HTMLのみの機能を使用します。

私は部分的にHTTP GET方法を使用して、HTMLフォームでこれを達成することができますが、その後、私は、ハイパーリンクを参照して、代わりに(私が使用したいいけないもの)、送信ボタンを使用する必要がカント:

<form method="get" action="http://site/page.html"> MyPage 
<input type="hidden" name="param1" value="value1"/> 
<input type="hidden" name="param2" value="value2"/> 
<input type="submit" /> 
</form> 

クエリパラメータの値は動的にレンダリングされるので、HTTP getメソッドを使用してWebサーバーに送信する前にエンコードする必要がある特殊文字を含むことができます。

これは、サーバー側のエンコードでコードを導入する必要なしにHTMLだけを使用して行うことができますか?

+1

フォームを使用していても、依然としてHTMLエンコードする必要があります。 – SLaks

+0

ボタンを使いたくないのはなぜですか? –

+0

フォームでは、enctype属性がデフォルトでapplication/x-www-form-urlencodedに設定されていると思います。これはトリックです。 1つのページに複数のハイパーリンクが必要なため、ハイパーリンクやボタンが見えないようにしたい。 – nurabha

答えて

0

あなたは、ハイパーリンクのように見えるようにボタンのスタイルを設定することができます

input.LinkButton { 
    border: none; 
    padding: 0; 
    background: transparent; 
    color: blue; 
    text-decoration: underline; 
    display: inline; 
    cursor: pointer; 
} 

はおそらくも:hover:activeスタイルをお勧めします。

+0

ありがとうございます。私はそれを試してみます – nurabha

+0

それはうまくいきます。しかし、今では、ホバーに下線のテキスト装飾を表示することに問題があります。私はインターネット上で検索し、多くのブラウザはこの属性をサポートしていないようです。私は今ブラウザの互換性の問題に遭遇するかもしれません – nurabha

+0

代わりに 'border-bottom'を試してください。 – SLaks

0

これは、JavaScriptを使用してencodeURIComponent()と呼び出すことで可能です。

ただし、Javascriptを無効にしてブラウザをサポートするには、サーバー上で実行する必要があります。

+0

OPはクエリを作成したいと思うフォームフィールドから文字列を取り出し、個々のフィールドをエンコードするのではなく、アクションに追加します(つまり、getリクエストを作成します)。 –

+0

OPが何を望んでいるか分かりません。問題は非常に混乱しています。 – SLaks

+0

ご迷惑をおかけして申し訳ありませんが、今質問を簡略化しました – nurabha

0

これは、サーバー側のエンコードでコードを導入する必要なしにHTMLだけを使用して行うことができますか?

いいえリンクはURIをとります。 %がエンコードされた文字の開始を示しているかどうか、または%の文字があるかどうかを判断する方法はありません。

動的にリンクを構築する場合は、すでにプログラミング言語を使用しています。エンコードルーティングを追加することは、どの言語でも簡単です。

関連する問題