Heim  >  Artikel  >  Web-Frontend  >  Wie verwendet Js eine URL, um verstümmelte chinesische Parameter an den Hintergrund zu übergeben?

Wie verwendet Js eine URL, um verstümmelte chinesische Parameter an den Hintergrund zu übergeben?

一个新手
一个新手Original
2017-09-22 10:23:432173Durchsuche

Wir verwenden diese URL häufig in der URL, um Parameter an das Backend zu übergeben, wenn das Frontend die entsprechende URL im Backend anfordert. Wenn die Parameter jedoch auf Chinesisch sind, treten verstümmelte Probleme auf. Betrachten wir ein Szenario, um die Lösung für verstümmelte Zeichen bei der Übergabe von Parametern in der URL im Detail zu erläutern.


Angenommen, wir haben ein Eingabefeld und eine Senden-Schaltfläche auf unserer Seite. Wenn wir auf die Senden-Schaltfläche klicken, erhalten wir die Benutzereingabe Geben Sie einen Wert in das Eingabefeld ein und verwenden Sie dann die URL, um Parameter zu übergeben, um den Wert des Eingabefelds an den Hintergrund zu übergeben. Wir gehen davon aus, dass der Hintergrund, der der Web-Layer-Verarbeitungstechnologie entspricht, Struts2 Action für die Datenverarbeitung verwendet, vorausgesetzt, dass die URL der in der Aktion verarbeiteten Daten /say lautet. Der spezifische Aktionscode für dringende Anfragen auf Seiten lautet wie folgt:

HTML-Code:


<input type="text" id="name" name="name" value="${user.name}" />
<button id="sub" onclick="sub()">提交</button>
javascript代码:
<script type="text/javascript">
function sub(){
var name = document.getElementById("name").value;①
 window.location = "sayHello?user.name=" + name;②
}
</script>

Der obige Code ruft zunächst das Eingabefeld aus dem Eingabefeld ab mit der ID des Namenswerts und verwenden Sie dann window.localtion, um die Aktion anzufordern, deren URL sayHello ist. Verwenden Sie nach dieser Aktion das Format key=value, um die Parameter zu übergeben, und verwenden Sie den Wert im Eingabefeld gemäß Struts2 Mechanismus zum Aktualisieren des Hintergrundbenutzers. Das Namensattribut der Entität .

URL-Codierungs- und Decodierungsprinzip:

Denn die Art und Weise, wie wir URL zum Übergeben von Parametern verwenden, hängt von der Browserumgebung ab, d. h. von der URL und jedem in der URL enthaltenen Schlüssel=Wert-Format Die Schlüssel-Wert-Paarparameter der übergebenen Parameter werden durch das Verarbeitungsprinzip in der Adressleiste des Browsers verarbeitet und dann nach der Verarbeitung der entsprechenden Codierung zur Dekodierung an den Hintergrund übergeben.

Da wir keine Verarbeitung durchgeführt haben, werden die chinesischen Parameter der URL entsprechend codiert, wenn JavaScript die URL anfordert und die Parameter auf Chinesisch übergibt (d. h. wenn Chinesisch in das Eingabefeld eingegeben wird). Browser-Mechanismus von. Derzeit liegt ein verstümmeltes Codierungsproblem vor.

Angenommen, der in das Eingabefeld eingegebene Inhalt ist das Wort „Test“ und der von der Hintergrundaktion empfangene Parameterwert ist verstümmelt. Verwenden Sie die Methode encodeURI() zum Codieren in Javascript.

1. Wenn Sie encodeURI() zum Codieren chinesischer URL-Parameter in Javascript verwenden, wird das Wort „test“ in „%E6%B5%8B%E8%AF%95“ umgewandelt

2. Der Browsermechanismus betrachtet jedoch „%“ als Escape-Zeichen und der Browser verarbeitet die Escape-Zeichen zwischen den konvertierten Parametern „%“ und „%“, die in der Adressleisten-URL übergeben werden, an die Hintergrundaktion. Dies führt zu Inkonsistenzen mit der tatsächlichen URL, die von encodeURI() codiert wird, da der Browser fälschlicherweise davon ausgeht, dass „%“ ein Escape-Zeichen ist, und „%“ nicht als gewöhnliches Zeichen betrachtet.

3. Damit die von encodeURI() konvertierte URL normal vom Browser verarbeitet werden kann, muss sie noch einmal von encodeURI() verarbeitet werden äußere Schicht. >RUL codiert durch encodeURI(). Durch diese Verarbeitung encodeURI() wird das „%“ in der codierten URL, das vom Browser als Escape-Zeichen analysiert wird, neu codiert und in ein normales Zeichen umgewandelt.

4. Nach der normalen Verarbeitung lautet der Code unter ② im vorherigen Javascript-Code:

window.location = encodeURI(encodeURI("sayHello?user.name=" + Name));

5. Die verarbeitete URL ist keine Zeichenfolge mehr, die von encodeURI()"%E6%B5%8B%E8%AF%95“, aber die Zeichenfolge nach der URL-Verarbeitung wurde von der vorherigen zweischichtigen encodeURI()“ verarbeitet %25E6%B255%258B%25E8%AF%2595“, indem das ursprüngliche „%“, das beim Durchsuchen als Escape-Zeichen analysiert wurde, neu codiert und in ein gewöhnliches Zeichen umgewandelt und in umgewandelt wurde „%25“.

Zu diesem Zeitpunkt hat der Front-End-Javascript-Code die Codierung der URL mit chinesischen Zeichen abgeschlossen und die Parameter über die URL an die Hintergrundaktion übergeben, um auf die Verarbeitung zu warten Normale Konvertierung ohne verstümmelte Zeichen. Der Parameter ist %25E6%B255%258B%25E8%AF%2595 der „Test“, den wir eingegeben haben. Action kann eine solche Zeichenfolge nicht verarbeiten, da es sich nicht um die von unserem Front-End eingegebene „Test“-Quelldaten handelt, sondern durch die Zeichenfolge encodeURI() zweimal codiert wurde. Daher müssen wir eine API im Backend verwenden, um die vom Frontend codierte Parameterzeichenfolge zu dekodieren. Die entsprechende Dekodierungs-API ist

URLDecoder.decode(user.getName(), „UTF-8“).

Die Methode decode(String str, String ecn) von URLDecoder verfügt über zwei Parameter. Der erste Parameter ist die zu dekodierende Zeichenfolge und der zweite Parameter ist die entsprechende Kodierung beim Dekodieren. Der Code, den wir zum Dekodieren mithilfe dieser API im Hintergrund verwenden, ist:

URLDecoder.decode(user.getName(),"UTF-8");

Zusammenfassung:

An diesem Punkt haben wir das Problem der verstümmelten chinesischen Parameter in der URL gelöst. Die Zusammenfassungsschritte sind grob in die folgenden Phasen unterteilt:

1. Verwenden Sie

encodeURI(), um die chinesischen Parameter in der URL zweimal in Javascript zu kodieren 2. Erhalten Sie den Fortschritt im Hintergrund Frontend

encodeURI() codierte Zeichenfolge, verwenden Sie decode(String str, String ecn) Methode zum Dekodieren von

Das obige ist der detaillierte Inhalt vonWie verwendet Js eine URL, um verstümmelte chinesische Parameter an den Hintergrund zu übergeben?. 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