cari
Rumahhujung hadapan webSoal Jawab bahagian hadapanApa yang perlu dilakukan jika parameter ajax jquery melepasi aksara bercelaru

Dengan perkembangan teknologi Internet, semakin banyak tapak web menggunakan teknologi Ajax untuk mencapai interaksi dinamik pada halaman web. jQuery, perpustakaan JavaScript yang paling popular, juga merupakan pilihan pertama untuk banyak tapak web. Walau bagaimanapun, apabila menggunakan Ajax jQuery untuk menghantar permintaan POST, banyak pembangun akan menghadapi masalah yang sangat memalukan - parameter Cina yang kacau. Artikel ini akan membincangkan punca dan penyelesaian kepada masalah ini.

Punca masalah

Apabila menghantar permintaan POST, kaedah Ajax jQuery menyerikan parameter dalam format "application/x-www-form-urlencoded" secara lalai dan menghantarnya ke bahagian belakang . Format ini agak mudah dan mempunyai keserasian terbaik antara penyemak imbas. Walau bagaimanapun, apabila parameter mengandungi aksara Cina, ia akan menyebabkan aksara bercelaru. Ini kerana format ini tidak menyokong bahasa Cina, dan bahasa Cina memerlukan pengekodan URL dan melarikan diri untuk penghantaran yang betul.

Untuk menyelesaikan masalah ini, kami boleh mempertimbangkan untuk menggunakan format data lain yang disediakan oleh jQuery - "multipart/form-data". Format ini menyokong bahasa Cina, tetapi perlu diingat bahawa apabila menggunakan format ini, pengepala permintaan akan mengandungi "Jenis Kandungan: multipart/form-data; sempadan=----XXXXXX", yang akan menyebabkan penyemak imbas secara automatik Menambahkan pembatas yang mungkin mengganggu bahagian belakang menghuraikan nilai parameter.

Penyelesaian

Untuk menangani masalah di atas, kita boleh menggunakan tiga penyelesaian berikut:

Kaedah 1: Mengekod URL secara manual

Apabila menghantar parameter , kami boleh mengekod URL secara manual dan kemudian menyahkodnya pada bahagian belakang. Parameter boleh dikodkan menggunakan kaedah encodeURIComponent() JavaScript. Contohnya:

$.ajax({
  type:'POST',
  url:url,
  data: {'name':encodeURIComponent('张三'),'age':20},
  success:function(data){
    console.log(data);
  }
});

Di bahagian belakang, gunakan kaedah URLDecoder.decode() Java untuk menyahkod:

String name = URLDecoder.decode(request.getParameter("name"), "UTF-8");
int age = Integer.parseInt(request.getParameter("age"));

Kaedah ini lebih menyusahkan dan memerlukan operasi pengekodan dan penyahkodan pada kedua-dua hujung depan dan belakang.

Kaedah 2: Ubah suai pengepala permintaan

Kami boleh mengubah suai pengepala permintaan, menukar "Content-Type" kepada "application/json;charset=utf-8", dan menggunakan format JSON untuk menghantar data. Contohnya:

$.ajax({
  type:'POST',
  url:url,
  contentType: "application/json;charset=utf-8",
  data: JSON.stringify({'name':'张三','age':20}),
  success:function(data){
    console.log(data);
  }
});

Di bahagian belakang, gunakan JsonParser Java untuk menghuraikan JSON:

JsonParser parser = new JsonParser();
JsonObject object = parser.parse(json).getAsJsonObject();
String name = object.get("name").getAsString();
int age = object.get("age").getAsInt();

Kaedah ini agak mudah, tetapi ia hanya sesuai untuk menghantar data dalam format JSON.

Kaedah 3: Ubah suai kod bahagian belakang

Jika bahagian belakang menggunakan PHP, anda boleh terus menggunakan $_POST atau $_REQUEST untuk mendapatkan nilai parameter tanpa pengekodan atau penyahkodan. Contohnya:

$name = isset($_POST['name']) ? $_POST['name'] : '';
$age = isset($_POST['age']) ? intval($_POST['age']) : 0;

Jika hujung belakang menggunakan Java, anda boleh menggunakan kaedah getInputStream() HttpServletRequest untuk mendapatkan nilai parameter. Contohnya:

StringBuilder sb = new StringBuilder();
BufferedReader bufferedReader = null;
try {
  InputStream inputStream = request.getInputStream();
  bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
  String line = null;
  while((line = bufferedReader.readLine()) != null) {
    sb.append(line);
  }
} catch (IOException e) {
  e.printStackTrace();
} finally {
  if(bufferedReader != null) {
    try {
      bufferedReader.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Seterusnya, kita boleh menggunakan JsonParser untuk menghuraikan data dalam format JSON, atau menghuraikan data secara manual dalam format application/x-www-form-urlencoded.

Ringkasnya, setiap kaedah mempunyai kelebihan dan kekurangannya sendiri, dan kita boleh memilih kaedah yang paling sesuai untuk kita mengikut situasi tertentu. Tidak kira kaedah yang digunakan, perhatian perlu diberikan kepada pengekodan dan penyahkodan parameter Cina untuk mengelakkan aksara yang bercelaru.

Atas ialah kandungan terperinci Apa yang perlu dilakukan jika parameter ajax jquery melepasi aksara bercelaru. 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
useState () vs usereducer (): memilih cangkuk yang tepat untuk keperluan negara andauseState () vs usereducer (): memilih cangkuk yang tepat untuk keperluan negara andaApr 24, 2025 pm 05:13 PM

PILISEUSESTATE () Forsimple, IndependentStateVariables; useUsereducer () forComplexStateLogicorWhenStededededSonPreviousState.1) useState () isIdealForsimpleupdatesliketogglingabooleanorupdatingAcounter.2)

Menguruskan Negeri dengan UseState (): Tutorial PraktikalMenguruskan Negeri dengan UseState (): Tutorial PraktikalApr 24, 2025 pm 05:05 PM

UseState lebih tinggi daripada komponen kelas dan penyelesaian pengurusan negeri yang lain kerana ia memudahkan pengurusan negeri, menjadikan kod lebih jelas, lebih mudah dibaca, dan selaras dengan sifat deklaratif React. 1) UseState membolehkan pemboleh ubah negeri diisytiharkan secara langsung dalam komponen fungsi, 2) ia mengingati negara semasa membuat semula melalui mekanisme cangkuk, 3) menggunakan useState untuk menggunakan pengoptimuman reaksi seperti menghafal untuk meningkatkan prestasi,

Bila Menggunakan UseState () dan Bila Mempertimbangkan Penyelesaian Pengurusan Negeri AlternatifBila Menggunakan UseState () dan Bila Mempertimbangkan Penyelesaian Pengurusan Negeri AlternatifApr 24, 2025 pm 04:49 PM

UseUsestate () forlocalComponentStatemanagement; pertimbangan yang tidak dapat dipertahankan, kompleksLogic, orperformanceissues.1) useState () isidealforsimple, localstate.2) useglobalStatesolutionsLikereduxorcontextForShorSharsharedState.3)

Komponen yang boleh diguna semula React: Meningkatkan Pengekalkan dan Kecekapan KodKomponen yang boleh diguna semula React: Meningkatkan Pengekalkan dan Kecekapan KodApr 24, 2025 pm 04:45 PM

ReusablecomponentsinreactenhanceCodeMaintainabilityandficiencybylowingdevelperstousethesamecomponentacrossdifferentpartsofanapplicationorprojects.1) merekaReduceredundancyandsimplifyupdates.2) mereka

Dom Maya di React: Meningkatkan Prestasi Melalui Kemas Kini CekapDom Maya di React: Meningkatkan Prestasi Melalui Kemas Kini CekapApr 24, 2025 pm 04:41 PM

Thevirtualdomisalightweightin-memorycopyoftherealealeusedbyreactooptimizeuiupdates.itboostsperformanceMinimizingDirectdomanipulationThoughaprocessofupdatingTheVirtualDomfirst, thenapplyingonlynectionarychangeSotheakualdom.

Integrasi HTML dan React: Panduan PraktikalIntegrasi HTML dan React: Panduan PraktikalApr 21, 2025 am 12:16 AM

HTML dan React boleh diintegrasikan dengan lancar melalui JSX untuk membina antara muka pengguna yang cekap. 1) Benamkan elemen HTML menggunakan JSX, 2) mengoptimumkan prestasi rendering menggunakan DOM maya, 3) mengurus dan menjadikan struktur HTML melalui komponen. Kaedah integrasi ini bukan sahaja intuitif, tetapi juga meningkatkan prestasi aplikasi.

React dan HTML: Memberi data dan acara pengendalianReact dan HTML: Memberi data dan acara pengendalianApr 20, 2025 am 12:21 AM

React dengan cekap menjadikan data melalui negeri dan prop, dan mengendalikan peristiwa pengguna melalui sistem peristiwa sintesis. 1) Gunakan UseState untuk menguruskan keadaan, seperti contoh kaunter. 2) Pemprosesan acara dilaksanakan dengan menambahkan fungsi dalam JSX, seperti klik butang. 3) Atribut utama diperlukan untuk membuat senarai, seperti komponen todolist. 4) Untuk pemprosesan borang, useState dan E.PreventDefault (), seperti komponen bentuk.

Sambungan backend: bagaimana reaksi berinteraksi dengan pelayanSambungan backend: bagaimana reaksi berinteraksi dengan pelayanApr 20, 2025 am 12:19 AM

React berinteraksi dengan pelayan melalui permintaan HTTP untuk mendapatkan, menghantar, mengemas kini dan memadam data. 1) Operasi Pengguna mencetuskan peristiwa, 2) Memulakan permintaan HTTP, 3) Respons Pelayan Proses, 4) Kemas kini Status Komponen dan Re-Render.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual