URLパラメータを設定するときに特殊文字をエンコードする
P粉348915572
P粉348915572 2023-08-17 11:25:49
0
2
465
<p>いくつかの URL パラメータを設定する必要があります。これには特殊文字 <code>$</code></p> も含まれている必要があります。 <p>現在、<code>.set()</code> を使用して、次のパラメータの値を作成および設定しています。</p> <pre class="brush:php;toolbar:false;">const myUrl = 新しい URL("http://www.example.com/?"); let params = 新しい URLSearchParams(); params.set('$param1', '60'); params.set('$param2', '100');</pre> <p>URL に <code>$</ ではなく <code>$</code> を確実に取得するには、<code>encodeURI()</code> を使用する必要があることはわかっています。 code> - しかし、どの段階でこれを行うべきでしょうか? </p> <p>パラメータを文字列に変換してURLに追加するときにこのようにすると、すでに変換されています。 </p> <pre class="brush:php;toolbar:false;">myUrl.search = encodeURI(params.toString()); // 出力: http://www.example.com/?$param1=60&$param2=100 // 期待値: http://www.example.com/?$param1=60&$param2=100</pre> <p><br /></p>
P粉348915572
P粉348915572

全員に返信(2)
P粉147747637

必要でサーバーがサポートしているので、最後に修正するだけです

リーリー
いいねを押す +0
P粉986028039

あなたの場合、$ 文字は URL の予約文字であるため、$ としてエンコードされます。 URLSearchParams オブジェクトの set メソッドは、これらの文字を自動的にエンコードして、生成された文字列が有効な URL であることを確認します。

ただし、$ 文字をそのまま含める場合は、クエリ文字列を手動で作成することで自動エンコードをバイパスできます。 リーリー

これにより、目的の出力が得られますが、

$ は予約文字であるため、URL 仕様によれば、これは有効な URL ではない可能性があることに注意してください。これにより、特定のサーバーまたは API で問題が発生する可能性があります。

やり取りしているサーバーまたは API を制御しており、クエリ文字列に

$ 文字を含む URL を処理できると確信している場合、このメソッドは機能するはずです。それ以外の場合は、通常、URLSearchParams によって提供される自動エンコードを使用するのが最も安全です。

このソリューションが機能するかどうか、またはさらにサポートが必要かどうかを確認してください。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート