Javascript для сохранения \f в возвращаемом значении

У меня есть следующий javascript, который работает нормально по большей части. Он получает пользователя, который зашел на сайт, и возвращает информацию о его DOMAIN\username. Проблема возникает, когда имя пользователя начинается с буквы, которая завершается допустимым escape-символом (например, 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.

Спасибо

1 ответ

Решение

Если вы используете ASP.net (как он выглядит), используйте AjaxHelper.JavaScriptStringEncode или же HttpUtility.JavaScriptStringEncode правильно вывести строку.

var userName='<%= HttpUtility.JavaScriptStringEncode(Request.ServerVariables("LOGON_USER"))%>';
Другие вопросы по тегам