Dalam pembangunan, kami sering menggunakan Ajax untuk membuat permintaan data, atau menggunakan jQuery untuk menghantar permintaan GET atau POST. Kadangkala, kami menghadapi masalah aksara bercelaru apabila melepasi parameter Cina. Dalam artikel ini, kami akan meneroka masalah parameter URL permintaan jQuery yang bercelaru dan menyediakan beberapa penyelesaian.
Apabila penyemak imbas menghantar permintaan kepada pelayan, parameter URL akan dikodkan. Di bawah kaedah pengekodan yang berbeza, hasil penukaran aksara Cina juga akan berbeza. Contohnya, di bawah pengekodan GB2312, pengekodan yang sepadan dengan aksara "中" ialah "D6D0", dan di bawah pengekodan UTF-8, pengekodan yang sepadan dengan aksara "中" ialah "E4B8AD".
Apabila penyemak imbas menghantar permintaan dalam mod GET, parameter akan dikodkan secara automatik Apabila menggunakan kaedah jQuery.ajax, jika parameter mengandungi aksara Cina, jQuery akan mengodkan aksara ini secara automatik ialah UTF-8. Walau bagaimanapun, apabila pelayan menerima permintaan, jika pengekodan set aksara tidak dinyatakan, kaedah pengekodan lalai akan digunakan untuk memproses parameter dan parameter akan dinyahkod, jadi parameter Cina akan kacau.
Untuk menyelesaikan masalah parameter Cina yang bercelaru, pemprosesan yang berbeza perlu dijalankan mengikut situasi yang berbeza.
2.1 Ubah suai kaedah pengekodan bahagian pelayan
Dalam beberapa kes, kami boleh mengubah suai kaedah pengekodan terus pada bahagian pelayan dan menentukan pengekodan UTF-8 untuk mengelakkan masalah parameter Cina yang kacau. . Contohnya, dalam kod Java JSP, anda boleh menambah kod berikut:
request.setCharacterEncoding("UTF-8");
2.2 Ubah suai kaedah pengekodan jQuery
Dalam jQuery.ajax, anda boleh mengubah suai pengekodan dengan menetapkan nilai. daripada parameter processData dan ContentType Way. Tetapkan processData kepada false, yang bermaksud bahawa pengekodan data dikendalikan oleh anda sendiri; set contentType kepada application/x-www-form-urlencoded;charset=utf-8, yang bermaksud kaedah pengekodan data ialah UTF-8.
$.ajax({ url: 'xxx', data: { name: '中文' }, type: 'GET', processData: false, contentType: 'application/x-www-form-urlencoded;charset=utf-8', success: function(data) { // 处理返回数据 }, error: function(xhr, textStatus, errorThrown) { // 处理错误 } });
2.3. Penukaran pengekodan dan penyahkodan
Jika kaedah pengekodan lain mesti digunakan, kami boleh melakukan operasi pengekodan dan penyahkodan secara manual. Dalam jQuery, anda boleh mengekod dan menyahkod rentetan menggunakan kaedah encodeURI dan decodeURI.
var name = '中文'; var encodedName = encodeURI(name); // 对名称进行编码 $.ajax({ url: 'xxx?name=' + encodedName, // 将编码后的名称传递给服务器 type: 'GET', success: function(data) { // 处理返回数据 }, error: function(xhr, textStatus, errorThrown) { // 处理错误 } });
Di bahagian pelayan, kami boleh menggunakan fungsi unescape JavaScript untuk memulihkan nilai parameter yang dinyahkod.
String str = request.getParameter("name"); str = URLDecoder.decode(str, "UTF-8"); str = unescape(str);
Di atas ialah penyelesaian kepada masalah bercelaru parameter URL permintaan jQuery, termasuk mengubah suai kaedah pengekodan sisi pelayan, mengubah suai kaedah pengekodan jQuery dan melaksanakan penukaran pengekodan dan penyahkodan . Dengan memahami kaedah pengekodan dan penukaran pengekodan, kami boleh mengelakkan masalah parameter Cina yang kacau-bilau dengan berkesan, meningkatkan kecekapan dalam pembangunan sebenar, dan mengurangkan kebarangkalian ralat.
Atas ialah kandungan terperinci Permintaan jquery url parameter masalah bercelaru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!