我有以下javascript,大部分工作正常。它会让用户登录该站点并返回其DOMAIN \用户名信息。当用户名以完成有效转义字符的字母开头时(例如DOMAIN \ fname),就会出现问题。 \ f进行插值并发生各种可怕的事情。我尝试过各种解决方法来尝试替换和/或转义/编码'\'。问题是\ f似乎没有可用于处理/匹配。被操作的字符串是'DOMAINname'
// DOMAIN\myusername - this works fine
// DOMAIN\fusername - fails
var userName='<%= Request.ServerVariables("LOGON_USER")%>';
userName = userName.replace('DOMAIN','');
alert("Username: " + userName);
如果我尝试使用userName变量进行解决方法,我也会看到各种奇怪的行为,我想这可能是因为它包含一个隐藏的\ f。我搜索了高低的解决方案,找不到东西。试图找出我是否可以在服务器端删除DOMAIN \但似乎也没有。有没有人有解决方案或解决方法?在调试器中,servervariable的初始值是正确的,但是对该变量的下一次立即调用是错误的。因此调试器中的插值如下所示:
var userName='DOMAIN\fusername';
userName; // 'DOMAINusername' in debugger.
由于
答案 0 :(得分:0)
如果你正在使用ASP.net(看起来像你),请使用AjaxHelper.JavaScriptStringEncode
或HttpUtility.JavaScriptStringEncode
正确输出字符串。
var userName='<%= HttpUtility.JavaScriptStringEncode(Request.ServerVariables("LOGON_USER"))%>';