我的服务器返回值为support\testing
. 当我在客户端获得这个值时,它可以转义为support testing
. \t
被转义为制表符空间。
如何避免在 JavaScript 中转义特殊字符?
我的服务器返回值为support\testing
. 当我在客户端获得这个值时,它可以转义为support testing
. \t
被转义为制表符空间。
如何避免在 JavaScript 中转义特殊字符?
您的服务器需要使用正确的转义输出字符串。
在这种情况下,您需要在输出中使用反斜杠字符;反斜杠是一个特殊字符,所以应该转义。
反斜杠的转义序列是\\
(即两个反斜杠),但您不需要考虑特定的转义码 - 如果您正在输出 JS 数据,您应该使用对整个字符串进行适当的转义来输出它,通常意味着您应该使用 JSON 编码。
如今,大多数服务器语言都提供 JSON 编码作为内置功能。您尚未指定服务器使用哪种语言,但例如,如果它是用 PHP 编写的,您将输出字符串json_encode($string)
而不是直接输出$string
。其他语言提供类似的功能。这不仅可以保护您免受损坏的反斜杠字符的影响,还可以保护您免受其他错误的影响,例如字符串中的引号或换行符,如果您将它们作为未转义的字符串放入 Javascript 代码中,也会导致错误。
您可以使用标记的模板文字
var str = (s => s.raw)`support\testing`[0]
匿名箭头函数将用作标记并s.raw
包含原始输入
如果您能够更改服务器端代码,则应在此处添加转义字符:"support\\testing"
.
这将产生预期的结果。
你可以做一个简单的替换:
str.replace("\t","\\t");
并为您需要替换的其他字符执行此操作。
最好的解决方案
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;
}
}
}