Rumah  >  Soal Jawab  >  teks badan

Mengekodkan aksara khas apabila menetapkan parameter URL

<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粉348915572P粉348915572430 hari yang lalu418

membalas semua(2)saya akan balas

  • P粉147747637

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

    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,"$"))

    balas
    0
  • P粉986028039

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

    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.

    balas
    0
  • Batalbalas