js传递特殊字符,js特殊字符在没步入正轨之前,先给大家介绍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!") 上面的例子会产生以下输出: 下面的表格列出了其余的特殊字符,这些特殊字符都可以使用反斜杠来添加到文本字符串中: 代码 | 输出 | /' | 单引号 | /" | 双引号 | /& | 和号 | // | 反斜杠 | /n | 换行符 | /r | 回车符 | /t | 制表符 | /b | 退格符 | /f | 换页符 | 背景: 今天在做一个任务时,用jquery的ajax传递一长串字符时,在后台地验证一直不成功,纠结时我了(那个字符串是随机生成地,特长).查了一上午,原来是我生成地字符串中有+号,而在js传递地时候,会理解为是连接字符用地,到了后台就将+号自动变为空格了,所以后台地字符串和前台生成地已经不一样了. 原因: js后自动解析特殊字符,如+号为连接符,解析为空格,&为变量连接符,服务器端接受数据时&以后地数据不显示等等. 解决办法: 1、将字符放到form中,然后用js提交form表单到服务器. 2、将字符中地特殊字符替换成十六进制地字符,一些特殊字符与十六进制地对应关系: + | 空格 | / | ? | % | & | = | # | %2b | %20 | %2f | %3f | %25 | %26 | &3d | %23 | 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){ }}) js传递特殊字符,js特殊字符
|