Mengekodkan aksara khas apabila menetapkan parameter URL
P粉348915572
P粉348915572 2023-08-17 11:25:49
0
2
471
<p>Saya perlu menetapkan beberapa parameter URL, yang juga perlu mengandungi aksara khas <kod>$</code></p> <p>Pada masa ini saya menggunakan <code>.set()</code> <pre class="brush:php;toolbar:false;">const myUrl = URL baharu("http://www.example.com/?"); biarkan params = URLSearchParams baharu(); params.set('$param1', '60'); params.set('$param2', '100');</pre> <p>Saya tahu saya perlu menggunakan <code>encodeURI()</code> untuk memastikan saya mendapat <code>$</code> kod> - Tetapi pada peringkat manakah saya harus melakukan ini? </p> <p>Jika saya melakukan sesuatu seperti ini apabila menukar parameter kepada rentetan dan menambahkannya pada URL, ia sudah pun ditukar. </p> <pre class="brush:php;toolbar:false;">myUrl.search = encodeURI(params.toString()); // Output: http://www.example.com/?%24param1=60&%24param2=100 // Jangkaan: http://www.example.com/?$param1=60&$param2=100</pre> <p><br /></p>
P粉348915572
P粉348915572

membalas semua(2)
P粉147747637

Memandangkan anda memerlukannya dan pelayan anda menyokongnya, cuma betulkan pada akhirnya

const myUrl = new URL("http://www.example.com/?");

let params = myUrl.searchParams;
params.set('$param1', '60');
params.set('$param2', '100');

console.log(myUrl.toString().replace(/%24/g,"$"))
P粉986028039

Dalam kes anda, kaedah $字符被编码为%24,因为它是URL中的保留字符。 URLSearchParams对象的set mengekod aksara ini secara automatik untuk memastikan rentetan yang terhasil ialah URL yang sah.

Walau bagaimanapun, jika anda ingin memasukkan $ aksara sebagaimana adanya, anda boleh memintas pengekodan automatik dengan membina rentetan pertanyaan secara manual:

const myUrl = new URL("http://www.example.com/?");

let params = ['$param1=60', '$param2=100'].join('&');

myUrl.search = params;

console.log(myUrl.toString());
// 输出:http://www.example.com/?$param1=60&$param2=100

Ini akan memberikan anda output yang diingini, tetapi sila ambil perhatian bahawa ini mungkin bukan URL yang sah mengikut spesifikasi URL, kerana $ ialah aksara yang dikhaskan. Ini boleh menyebabkan masalah dengan pelayan atau API tertentu.

Jika anda mengawal pelayan atau API yang anda sedang berinteraksi, dan anda yakin ia boleh mengendalikan URL dengan $字符的URL,则此方法应该有效。否则,通常最安全的做法是使用URLSearchParams aksara dalam rentetan pertanyaan, kaedah ini sepatutnya berfungsi. Jika tidak, biasanya paling selamat menggunakan pengekodan automatik yang disediakan oleh URLSearchParams.

Sila sahkan jika penyelesaian ini berfungsi untuk anda atau jika anda memerlukan bantuan lanjut.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan