Maison  >  Article  >  interface Web  >  Que dois-je faire si jQuery envoie une demande pour transmettre des paramètres chinois tronqués ?

Que dois-je faire si jQuery envoie une demande pour transmettre des paramètres chinois tronqués ?

coldplay.xixi
coldplay.xixioriginal
2020-12-03 10:41:421900parcourir

La solution à la requête jQuery pour transmettre des paramètres chinois tronqués : envoyez d'abord les paramètres directement en mode GET ; puis transcodez, le code est [String center = new String(param.getBytes("iso8859-1") , "utf-8")].

Que dois-je faire si jQuery envoie une demande pour transmettre des paramètres chinois tronqués ?

L'environnement d'exploitation de ce tutoriel : système Windows7, version jquery3.2.1, ordinateur Dell G3.

Solution à la requête jQuery pour transmettre des paramètres chinois tronqués :

Les exigences sur lesquelles je travaille actuellement impliquent des requêtes en cascade, qui nécessitent des requêtes basées sur le contenu de la partie supérieure -level liste déroulante. Affiche la liste déroulante du niveau inférieur. Comme il n'y a que deux niveaux de cascade et que les données du tableau ne seront guère modifiées plus tard, le tableau que j'ai conçu stocke directement le chinois.

Le menu est le suivant :

Que dois-je faire si jQuery envoie une demande pour transmettre des paramètres chinois tronqués ?

Le code est le suivant :

var url = "${basePath}/institutionConfig/getDepartmentByCenter.do?param=" + center;
$.get(url, function (data) {
 var list = data.data;
 for (var i = 0; i < list.length; i++) {
   departmentSelector += "<option value=&#39;" + list[i] + "&#39; ";
   if (department && list[i] == department) {
    departmentSelector += "selected=&#39;selected&#39;";
   }
   departmentSelector += ">" + list[i] + "</option>";
 }
 $("#accountDepartmentAdd").html(departmentSelector);
});

J'utilise $.get(url, callback) pour envoyer des requêtes au background. Puisque les paramètres sont Il est envoyé directement en mode GET, donc le navigateur encode les paramètres avec un encodage URL, et les paramètres obtenus en arrière-plan sont :

Que dois-je faire si jQuery envoie une demande pour transmettre des paramètres chinois tronqués ?

Comme vous peut voir, le paramètre reçu est des caractères tronqués. J'ai donc effectué un traitement ultérieur, c'est-à-dire un transcodage :

String center = new String(param.getBytes("iso8859-1"), "utf-8");

De cette façon, le texte reçu est en chinois.

Cependant, cette approche a en fait signalé une erreur dans l'environnement de test. Après avoir analysé la raison, j'ai découvert que l'environnement de test recevait le chinois correct, mais qu'il était erroné après le transcodage. Par conséquent, la solution devrait être de modifier la demande de page. Étant donné que les paramètres générés par la méthode GET sont codés, ils sont modifiés en requête POST. La requête POST soumettra les données d'origine :

var url = "${basePath}/institutionConfig/getDepartmentByCenter.do";
$.ajax({
  url: url,
  data: {"param": center},
  dataType: "json",
  type: "POST",
  success: function (data) {
   var list = data.data;
   for (var i = 0; i < list.length; i++) {
    departmentSelector += "<option value=&#39;" + list[i] + "&#39; ";
    if (department && list[i] == department) {
     departmentSelector += "selected=&#39;selected&#39;";
    }
    departmentSelector += ">" + list[i] + "</option>";
   }
   $("#accountDepartmentAdd").html(departmentSelector);
  }
 });

Recommandations d'apprentissage gratuites associées : javascript(vidéo)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn