検索

ホームページ  >  に質問  >  本文

URLパラメータを設定するときに特殊文字をエンコードする

<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粉348915572P粉348915572475日前454

全員に返信(2)返信します

  • P粉147747637

    P粉1477476372023-08-18 09:43:27

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

    リーリー

    返事
    0
  • P粉986028039

    P粉9860280392023-08-18 09:07:27

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

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

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

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

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

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

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

    返事
    0
  • キャンセル返事