基于javascript如何传递特殊字符
在没步⼊正轨之前,先给⼤家介绍JavaScript 特殊字符
你可以在 JavaScript 中使⽤反斜杠来向⽂本字符串添加特殊字符。
插⼊特殊字符
反斜杠⽤来在⽂本字符串中插⼊省略号、换⾏符、引号和其他特殊字符。
请看下⾯的 JavaScript 代码:
var txt="We are the so-called "Vikings" from the north."
document.write(txt)
在 JavaScript 中,字符串使⽤单引号或者双引号来起始或者结束。这意味着上⾯的字符串将被截为:We are the so-called。要解决这个问题,就必须把在 "Viking" 中的引号前⾯加上反斜杠 (\)。这样就可以把每个双引号转换为字⾯上的字符串。
var txt="We are the so-called \"Vikings\" from the north."
document.write(txt)
现在 JavaScript 就可以输出正确的⽂本字符串了:We are the so-called "Vikings" from the north。
这是另⼀个例⼦:
document.write ("You \& me are singing!")
上⾯的例⼦会产⽣以下输出:
You & me are singing!
下⾯的表格列出了其余的特殊字符,这些特殊字符都可以使⽤反斜杠来添加到⽂本字符串中:
代码输出
\'单引号
\"双引号
\&和号
\\反斜杠
\n换⾏符
\r回车符
\t制表符
\b退格符
\f换页符
背景:
今天在做⼀个任务时,⽤jquery的ajax传递⼀长串字符时,在后台地验证⼀直不成功,纠结时我了(那个字符串是随机⽣成地,特长).查了⼀上午,原来是我⽣成地字符串中有+号,⽽在js传递地时候,会理解为是连接字符⽤地,到了后台就将+号⾃动变为空格了,所以后台地字符串和前台⽣成地已经不⼀样了.
原因:
js后⾃动解析特殊字符,如+号为连接符,解析为空格,&为变量连接符,服务器端接受数据时&以后地数据不显⽰等等.
解决办法:
1、将字符放到form中,然后⽤js提交form表单到服务器.
2、将字符中地特殊字符替换成⼗六进制地字符,⼀些特殊字符与⼗六进制地对应关系:
+空格/?%&=#
%2b%20%2f%3f%25%26&3d%23
str = place(/\+/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){
js在字符串中添加字符}
})
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论