我从ASP.net <%=HttpContext.Current.User.Identity.Name%>
设置一个javascript变量JavaScript变量丢失字符
var username = '<%=HttpContext.Current.User.Identity.Name%>';
输出“域sername”
它基本上拿出反斜杠和用户名的第一个字母。为什么要删除这两个字符?
我从ASP.net <%=HttpContext.Current.User.Identity.Name%>
设置一个javascript变量JavaScript变量丢失字符
var username = '<%=HttpContext.Current.User.Identity.Name%>';
输出“域sername”
它基本上拿出反斜杠和用户名的第一个字母。为什么要删除这两个字符?
你在做什么实际冲压是这样的:
var username = 'domain\username';
的\u
被视为JavaScript字符串中的转义序列。根据用户名的实际情况,您会看到不同的结果,从换行符到制表符到语法错误。
你需要正确编码它使用类似HttpUtility.JavaScriptStringEncode
在服务器上:
var username = '<%=HttpUtility.JavaScriptStringEncode(HttpContext.Current.User.Identity.Name)%>';
非常感谢你! – user3511786
在JS(任何许多其他语言)中\
用于具有特殊角色的字符串,称为ESCAPE CHARACTER。您需要使用\\
得到\
一个字符串,测试它在控制台:
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
是一个符号(而不是\和之后的字符吧)在字符串中,\\
瓦特应该代表\
。
这比JavaScript的最有可能更多地与ASP.net。 – TKoL
无法复制所描述的行为。在我的例子中,我确实在页面源代码中看到'var username ='domain \ username';'。也许问题是更多的下游你使用'用户名'? – David
@TKoL我不同意,JS导致字符串被解析\字符作为转义字符。详情请参阅下文。 – DanteTheSmith