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