Heim  >  Artikel  >  Web-Frontend  >  Was soll ich tun, wenn jQuery eine Anfrage zur Übertragung verstümmelter chinesischer Parameter sendet?

Was soll ich tun, wenn jQuery eine Anfrage zur Übertragung verstümmelter chinesischer Parameter sendet?

coldplay.xixi
coldplay.xixiOriginal
2020-12-03 10:41:421900Durchsuche

Die Lösung für die jQuery-Anfrage zur Übertragung verstümmelter chinesischer Parameter: Senden Sie die Parameter zuerst direkt im GET-Modus und kodieren Sie sie dann. Der Code lautet [String center = new String(param.getBytes("iso8859-1"), "utf-" 8")].

Was soll ich tun, wenn jQuery eine Anfrage zur Übertragung verstümmelter chinesischer Parameter sendet?

Die Betriebsumgebung dieses Tutorials: Windows7-System, JQuery3.2.1-Version, Dell G3-Computer.

Lösung für die jQuery-Anfrage zur Übertragung verstümmelter chinesischer Parameter:

Die Anforderung, an der ich derzeit arbeite, umfasst kaskadierende Abfragen. Es ist notwendig, die Liste der Dropdown-Felder der unteren Ebene basierend auf dem Inhalt der oberen Ebene abzufragen Da die Kaskade nur zwei Ebenen hat und die Daten in der Tabelle später kaum geändert werden, speichert die von mir entworfene Tabelle direkt Chinesisch.

Das Menü sieht wie folgt aus:

Was soll ich tun, wenn jQuery eine Anfrage zur Übertragung verstümmelter chinesischer Parameter sendet?

Der Code lautet wie folgt:

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);
});

Ich verwende $.get(url, callback), um Anfragen an den Hintergrund zu senden. Da die Parameter direkt im GET-Modus gesendet werden, kodiert der Browser die Parameter mit URL-Kodierung , und der Hintergrund Die erhaltenen Parameter sind:

Was soll ich tun, wenn jQuery eine Anfrage zur Übertragung verstümmelter chinesischer Parameter sendet?

Sie können sehen, dass der empfangene Parameter verstümmelter Code ist. Also habe ich eine weitere Verarbeitung durchgeführt, also eine Transkodierung:

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

Auf diese Weise ist der empfangene Text chinesisch.

Aber dieser Ansatz meldete tatsächlich einen Fehler in der Testumgebung. Nach der Analyse der Ursache stellte ich fest, dass die Testumgebung das richtige Chinesisch erhielt, aber nach der Transkodierung stellte sich heraus, dass es falsch war. Daher sollte die Lösung darin bestehen, die Seitenanforderung zu ändern. Da die durch die GET-Methode verursachten Parameter codiert sind, wird sie in eine POST-Anfrage umgewandelt. Die POST-Anfrage übermittelt die Originaldaten:

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);
  }
 });

Verwandte kostenlose Lernempfehlungen: Javascript (Video)

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn jQuery eine Anfrage zur Übertragung verstümmelter chinesischer Parameter sendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn