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"))%>';