【问题标题】:Javascript to preserve \f in returned valueJavascript 在返回值中保留 \f
【发布时间】:2014-02-13 15:27:44
【问题描述】:

我有以下 javascript 在大多数情况下都可以正常工作。它获取已登录到站点的用户并返回他们的 DOMAIN\username 信息。当用户名以完成有效转义字符的字母开头时(例如 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\ ,但这似乎也不可用。有没有人有解决方案或解决方法?在调试器中,服务器变量的初始值是正确的,但下一次立即调用该变量是错误的。所以调试器中的插值是这样的:

var userName='DOMAIN\fusername';
userName; // 'DOMAINusername' in debugger.

谢谢

【问题讨论】:

  • 将 \ 放入字符串 literal 转义它:var userName='DOMAIN\\fusername';

标签: javascript asp.net escaping request.servervariables


【解决方案1】:

如果您使用的是 ASP.net(就像您一样),请使用 AjaxHelper.JavaScriptStringEncodeHttpUtility.JavaScriptStringEncode 正确输出字符串。

var userName='<%= HttpUtility.JavaScriptStringEncode(Request.ServerVariables("LOGON_USER"))%>';

【讨论】:

  • 做到了!我确实必须在呼叫周围添加单引号!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多