У меня есть строка, в которой я делаю JSON.stringify (str) в Javascript. Строка - L'Oreal.apostrophe в JSON вызывает ошибки на сервере
Однако, поскольку эта переменная получает передается вокруг, прежде чем произойдет JSON.stringify, его значение становится
L & # 39; Oreal (без пространства между & и #), и полученную JSON строку, я отправить к серверу признается потенциально опасным, и я получаю ошибку на стороне сервера.
Мой вопрос: как мне избежать замены апострофа на < & # 39>; перед вызовом stringify или альтернативным способом решения этого вопроса?
EDIT 1: Вот код, который является причиной этого, его довольно основной -
for (var rowIndex = 0; rowIndex < numrows; rowIndex++)
{
var cellValues = new Array();
for (var cellIndex=0; cellIndex < numCols; cellIndex++)
{
cellValues[cellIndex] = someInputArray[cellIndex]; //One of the values that gets populated here inlcudes the word L'Oreal
}
rowValues[rowIndex] = cellValues; //After this assignment, rowValues[0][3] which was earlier L'Oreal becomes L'Oreal
}
var jsonToSend = JSON.stringify(rowValues);
Я пытался построить jsFiddle, но я не вижу этого там происходит в этом очень простом примере, который имитирует # раз строка присваивается в фактическом коде.
EDIT 2: Я знаю, почему это происходит сейчас. Мы HTML Кодируем данные, когда они поступают с сервера, чтобы избежать внедрения XSS. Пока он отображается хорошо, когда я конвертирую эти данные в JSON, это приводит к плохо сформированному JSON, который сервер распознает как потенциально опасный и генерирует исключение.
Код на стороне сервера (.Net C#) - WebUtility.HtmlEncode (данные);
По-прежнему не знаю, какой хороший способ справиться с этим может быть.
Покажите код, который вызывает символ, который будет заменен на лицо в первую очередь. – Barmar
Нужно посмотреть какой-нибудь код, пожалуйста. –
Любая причина, по которой вы используете 'new Array()' вместо '[]'? Это не имеет никакого отношения к проблеме апострофа, но использование '[]' действительно является лучшим способом создания массива. –