Bevor wir auf den richtigen Weg kommen, möchte ich Ihnen zunächst JavaScript-Sonderzeichen vorstellen
Sie können in JavaScript Backslashes verwenden, um Textzeichenfolgen Sonderzeichen hinzuzufügen.
Sonderzeichen einfügen
Backslashes werden verwendet, um Ellipsen, Zeilenumbrüche, Anführungszeichen und andere Sonderzeichen in Textzeichenfolgen einzufügen.
Bitte sehen Sie sich den folgenden JavaScript-Code an:
var txt="We are the so-called "Vikings" from the north." document.write(txt)
In JavaScript verwenden Zeichenfolgen am Anfang oder Ende einfache oder doppelte Anführungszeichen. Dies bedeutet, dass die obige Zeichenfolge wie folgt gekürzt wird: Wir sind die sogenannten.
Um dieses Problem zu lösen, müssen Sie den Anführungszeichen in „Viking“ einen Backslash () voranstellen. Dadurch wird jedes doppelte Anführungszeichen in eine Literalzeichenfolge umgewandelt.
var txt="We are the so-called \"Vikings\" from the north." document.write(txt)
Das JavaScript gibt nun die richtige Textzeichenfolge aus: Wir sind die sogenannten „Wikinger“ aus dem Norden.
Hier ist ein weiteres Beispiel:
document.write ("You \& me are singing!")
Das obige Beispiel erzeugt die folgende Ausgabe:
You & me are singing!
In der folgenden Tabelle sind die verbleibenden Sonderzeichen aufgeführt, die mithilfe von Backslashes zu Textzeichenfolgen hinzugefügt werden können:
Code | Ausgabe |
---|---|
' | Einfache Anführungszeichen |
" | Doppelte Anführungszeichen |
& | kaufmännisches Und |
\ | Backslash |
n | Zeilenumbruch |
r | Wagenrücklaufzeichen |
t | Tab |
b | Rücktaste |
f | Seiten-Feed |
Hintergrund:
Als ich heute eine Aufgabe erledigte und eine lange Zeichenfolge mit jquery übergab, war die Überprüfung im Hintergrund immer erfolglos (die Zeichenfolge wurde zufällig generiert, eine Besonderheit). Den ganzen Morgen stellte sich heraus, dass die von mir generierte Zeichenfolge eine Zahl enthält. Wenn sie von js übergeben wird, wird sie als Verbindungszeichen verstanden und die Zahl wird im Hintergrund automatisch in ein Leerzeichen geändert Die im Hintergrund generierte Zeichenfolge unterscheidet sich von der in der Rezeption generierten Zeichenfolge.
Grund:
Sonderzeichen werden nach js automatisch analysiert. Am ist beispielsweise ein Konnektor, der als Leerzeichen analysiert wird, und & ist ein variabler Konnektor. Wenn der Server Daten akzeptiert, werden die Daten nach & usw. nicht angezeigt.
Lösung:
1. Geben Sie die Zeichen in das Formular ein und senden Sie das Formular dann mit js an den Server.
2. Ersetzen Sie die Sonderzeichen in den Zeichen durch Hexadezimalzeichen. Die Entsprechung zwischen einigen Sonderzeichen und Hexadezimalzeichen:
Weltraum | / | ? | % | & | = | # | |
+ | / | ? | % | & | &3d | # |
str = str.replace(/\+/g,%2b); 将+号替换为十六进制
3、最简单地一种,使用encodeuricomponent()函数.
该方法不会对 ascii 字母和数字进行编码,也不会对这些 ascii 标点符号进行编码: - _ . ! ~ * ' ( ) .
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 uri 组件地标点符号),都是由一个或多个十六进制地转义序列替换地.
jQuery ajax特殊字符参数
在做ajax登录时候遇到的一个问题,当传入参数含有特殊字符,比如:“$'#@”等。参数传递会有问题,无法正确获取。
$.ajax({ url: '/user/login.ydd', type:'post', data:'name=abce&password=abcd&pwd', success: function(data){ } })
我要传入的是用户名为:abc,密码为abcd&pwd的用户登录。但传入后台获取参数,会被password=abcd当作一个参数传递,&这个特殊将pwd分开了作为另一个参数解析了。
解决方法,这时候就需要ajax另外一种传递参数的方式
$.ajax({ url: '/user/login.ydd', type:'post', data:{'name':'abce','password':'abcd&pwd'}, success: function(data){ } })