Javascript变量缺少字符

Javascript变量缺少字符,javascript,asp.net,Javascript,Asp.net,我正在从ASP.net设置一个javascript变量 var username=''; 输出“域名” 基本上,它去掉了用户名的反斜杠和第一个字母。为什么要删除这两个字符?在JS(任何其他语言)中,\用于具有特殊角色的字符串,称为转义字符。您需要使用\\获取字符串中的\,在控制台中进行测试: console.log("\"); console.log("\\"); 这是如何形成特殊字符,如换行符的\n等 我认为这些都是在JS中使用转义字符的情况: \' single quote \" d

我正在从ASP.net设置一个javascript变量

var username='';
输出“域名”

基本上,它去掉了用户名的反斜杠和第一个字母。为什么要删除这两个字符?

在JS(任何其他语言)中,
\
用于具有特殊角色的字符串,称为转义字符。您需要使用
\\
获取字符串中的
\
,在控制台中进行测试:

console.log("\");
console.log("\\");
这是如何形成特殊字符,如换行符的
\n

我认为这些都是在JS中使用转义字符的情况:

\'  single quote
\"  double quote
\\  backslash
\b  Backspace
\r  Carriage Return
\f  Form Feed
\t  Horizontal Tabulator
\v  Vertical Tabulator

长话短说,JS认为
\character
是字符串中的一个符号(而不是\和后面的字符),
\
将表示
\

您所做的实际上是在如下内容上打上印记:

var username = 'domain\username';
\u
在JavaScript字符串中被视为转义序列。根据用户名的实际情况,您将看到不同的结果,从换行符、选项卡到语法错误

您需要在服务器上使用以下方式对其进行正确编码:

var username='';

这很可能与ASP.net有关,而与javascript无关。无法复制所描述的行为。在我的示例中,我确实看到了
var username='domain\username'在页面源代码中。也许问题在使用
username
?@TKoL我不同意,JS导致字符串被解析为转义字符。有关详细信息,请参见下面的内容。@David确实如此,但如果您尝试在JavaScript控制台中运行它:。根据用户名的不同,您将得到不同的结果。例如玩我的名字:
var username='domain\thorpej'
你就可以得到OPs了behaviour@JamesThorpe:是的。还值得注意的是,
var username='domain\davidd'
不会产生错误。最后,我认为检查OP所说的“输出”的含义将对OP有利。实际的运行时客户端代码是什么?他观察到的输出是什么?行为可能会有所不同,这取决于实际字符串是什么以及他正在使用它做什么。至少,如果他养成了在任何时候出现JavaScript问题时打开浏览器工具并查看JavaScript代码的习惯,那将是一件好事。
var username = 'domain\username';
var username = '<%=HttpUtility.JavaScriptStringEncode(HttpContext.Current.User.Identity.Name)%>';