我的服务器返回值为support\testing
。当我在客户端获取这个值时,它可能会被转义为support testing
。\t
会被转义为空格。
如何避免JavaScript中的特殊字符转义?
我的服务器返回值为support\testing
。当我在客户端获取这个值时,它可能会被转义为support testing
。\t
会被转义为空格。
如何避免JavaScript中的特殊字符转义?
您的服务器需要正确进行字符串转义后输出。
在这种情况下,您希望在输出中使用反斜杠字符;反斜杠是一个特殊字符,因此应该进行转义处理。
反斜杠的转义序列是\\
(即两个反斜杠),但您不需要考虑具体的转义代码 - 如果您正在输出JS数据,则应该对整个字符串进行适当的转义处理,通常意味着您应该使用JSON编码。
现今大多数服务器语言都提供JSON编码作为内置功能。您没有说明您的服务器使用的是哪种语言,但例如如果它是用PHP编写的,您应该将字符串输出为json_encode($string)
而不是直接输出$string
。其他语言也提供类似的功能。这不仅可以保护您免受破损的反斜杠字符的影响,还可以避免其他错误,例如在字符串中放入引号或换行符等未转义的内容,在作为未转义的字符串放入JavaScript代码时同样会导致错误。
</script>
,因为通常情况下仅对JavaScript字符串进行转义并不能解决这个问题 :9 - Esailijavar str = (s => s.raw)`support\testing`[0]
s.raw
包含原始输入。如果您能够更改服务器端代码,应该在那里添加转义字符:"support\\testing"
。
这将导致所需的结果。
您可以进行简单的替换:
str.replace("\t","\\t");
并对需要替换的其他字符执行此操作。
str.replace(/\t/g, '\\t');
可以将字符串中的制表符替换为"\t"。 - Dziad Borowy最佳解决方案
function valid(f) {
debugger;
var s = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?~";
str = f.value;
for (var i = 0; i < str.length; i++) {
if (s.indexOf(str.charAt(i)) != -1) {
//alert("The box has special characters. \nThese are not allowed.\n");
f.value = f.value.replace(str.charAt(i), '');// : null;
return false;
}
}
}
"support\\testing"
?参见:http://msdn.microsoft.com/en-us/library/ie/2yfce773(v=vs.94).aspx - i_am_jorf\t
被渲染为制表符,那么你不应该得到support<tab>esting
吗? - apaderno