Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Bagaimana untuk menyelesaikan nilai kacau yang diluluskan oleh url jquery

Bagaimana untuk menyelesaikan nilai kacau yang diluluskan oleh url jquery

PHPz
PHPzasal
2023-04-07 09:02:58725semak imbas

Dengan pembangunan teknologi Web, rangka kerja bahagian hadapan telah menjadi bahagian yang amat diperlukan dalam membangunkan aplikasi Web, antaranya jQuery juga merupakan salah satu rangka kerja bahagian hadapan yang paling popular pada masa ini. Dalam pembangunan, selalunya perlu untuk menghantar parameter ke latar belakang melalui URL Walau bagaimanapun, apabila menggunakan jQuery, kadangkala penghantaran nilai URL bercelaru. Jadi, bagaimana masalah ini timbul dan bagaimana untuk menyelesaikannya?

1. URL passing by value

Pertama sekali, mari kita fahami apa itu URL passing by value. URL (Uniform Resource Locator, Uniform Resource Locator) ialah alamat sumber standard di Internet, biasanya dalam bentuk:

protocol://hostname[:port]/path/?query

di mana , pertanyaan ialah bahagian URL yang dilalui nilai. Ia akan dibawa secara automatik apabila pelayar menghantar permintaan supaya program back-end boleh mendapatkan data yang diminta oleh pengguna.

Dalam pembangunan sebenar, kami boleh menggunakan kaedah AJAX jQuery untuk menghantar nilai URL, seperti yang ditunjukkan di bawah:

$.ajax({
    type: "GET",
    url: "test.php",
    data: { name: "John", age: 25 }
});

Dalam kod ini, kami lulus kaedah GET untuk menguji.php Permintaan ialah dihantar, melepasi dua nama parameter dan umur dalam URL, John dan 25 masing-masing.

2. Masalah penghantaran nilai URL bercelaru

Jika nilai parameter kami sendiri mengandungi aksara Cina atau aksara khas lain, maka mungkin terdapat masalah penghantaran nilai URL yang kacau. Contohnya, jika kami menetapkan nilai nama kepada Zhang San, URL permintaan yang dihantar akan menjadi:

test.php?name=%E5%BC%A0%E4%B8%89&age=25

%E5%BC%A0%E4%B8%89 ini ialah Zhang San yang dikodkan menggunakan UTF-8. Walau bagaimanapun, kadangkala kita akan mendapati bahawa nilai parameter yang diluluskan dalam URL adalah bercelaru, contohnya:

test.php?name=%C8%ED%B9%FA&age=25

Ini Dalam kes ini, latar belakang mungkin tidak dapat menghuraikan parameter dengan betul, menyebabkan atur cara berlaku secara tidak normal. Jadi, bagaimana masalah ini timbul dan bagaimana untuk menyelesaikannya?

Malah, sebab masalah ini adalah sangat mudah kerana jQuery menggunakan pengekodan UTF-8 secara lalai apabila memindahkan nilai URL, dan program latar belakang mungkin tidak dapat menghuraikan pengekodan dengan betul. Oleh itu, apabila kaedah pengekodan lain digunakan di latar belakang, nilai parameter akan bercelaru.

3. Penyelesaian kepada penghantaran nilai URL yang bercelaru

Jadi, bagaimana untuk menyelesaikan masalah penghantaran nilai URL yang kacau? Dua penyelesaian diperkenalkan di bawah.

1. Pengekodan manual

Pertama sekali, kami boleh menggunakan kaedah encodeURIComponent() JavaScript untuk mengekod secara manual, seperti yang ditunjukkan di bawah:

var name = "张三";
var age = 25;
var url = "test.php?name=" + encodeURIComponent(name) + "&age=" + age;
$.ajax({
    type: "GET",
    url: url
});

Dengan cara ini, kami boleh mengekod aksara Cina dan aksara khas lain dikodkan dengan betul untuk mengelakkan masalah penghantaran nilai URL yang bercelaru.

2. Tetapkan pengekodan lalai

Kedua, kami juga boleh menyelesaikan masalah ini dengan menetapkan pengekodan lalai jQuery. Secara khusus, tetapkan atribut contentType kepada application/x-www-form-urlencoded, seperti yang ditunjukkan di bawah:

$.ajaxSetup({
    contentType: "application/x-www-form-urlencoded; charset=UTF-8"
});

Dengan cara ini, jQuery akan menggunakan pengekodan UTF-8 secara lalai dan mengekod nilai parameter ialah dihantar ke bahagian belakang melalui URL untuk memastikan bahawa program bahagian belakang boleh menghuraikan parameter dengan betul dan mengelakkan masalah penghantaran nilai URL yang bercelaru.

Secara umumnya, nilai URL yang bercelaru adalah masalah biasa dalam pembangunan jQuery, tetapi sebenarnya, anda boleh menyelesaikan masalah ini dengan mudah dengan meluangkan sedikit masa untuk memahami peraturan pengekodan. Saya harap artikel ini dapat membantu semua orang.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan nilai kacau yang diluluskan oleh url jquery. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn