我從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