Permintaan jquery url parameter masalah bercelaru

WBOY
Lepaskan: 2023-05-23 11:28:07
asal
634 orang telah melayarinya

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.

  1. Punca masalah

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.

  1. Penyelesaian

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");
Salin selepas log masuk

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) {
        // 处理错误
    }
});
Salin selepas log masuk

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) {
        // 处理错误
    }
});
Salin selepas log masuk

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);
Salin selepas log masuk
  1. Ringkasan

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan