В любом случае, чтобы избежать неопределенной строковой литеральной ошибки, если я создаю строку из неизвестного источника - PullRequest
0 голосов
/ 20 июля 2010

Мне нужно создать строку в JavaScript из некоторого текста, который предоставляет пользователь. Когда я пытаюсь запустить эту строку:

var str = new String('<%= @note.text %>')

Я получаю неопределенную строковую литеральную ошибку. Учитывая, что у меня нет контроля над тем, что вводится, и я не могу назначить строку для начала какой-либо замены символов, как мне решить эту проблему? Спасибо за чтение.

Ответы [ 2 ]

1 голос
/ 20 июля 2010

Нет ничего, что вы можете сделать на стороне клиента, вам нужно очистить строку на сервере.Учитывая, что вы помещаете литерал в конструктор String через <% =%>, я предполагаю, что вы используете какой-то ряд ASP.Net.

Я уверен, что есть более элегантный способ сделать это, но это должно работать как первый проход при кодировании строки для использования в JavaScript.Это не делает попытки обратиться к относительным преимуществам передачи произвольных строк в JavaScript в первую очередь.(В большинстве случаев, скорее всего, должны быть некоторые проверки на наличие вредоносных строк на стороне сервера.)

Если заметка является полем ввода текста, что-то вроде этого может работать ....

// New Property in your code behind
public string outputText {get; private set;}

В OnLoad () добавьте

// Encode the string
string tempText = Note.Text
outputText = String.empty;
foreach( char character in tempText)
{
  // Prefix quotation mark with a backslash,
  if(char == "\"")
    outputText += "\\\"";
  // Prefix apostrophe with a backslash,
  else if(char == "'")
    outputText += "\\'";
  // convert newline to a literal.
  else if(char == "\n")
    outputText += "\\n";
  else
    outputText += character;
}

И, наконец, в свой .aspx

var str = new String('<%= outputText %>')
1 голос
/ 20 июля 2010

Вы не можете выбросить произвольный текст в JS и быть в состоянии восстановиться после ошибок.

Вы должны очистить данные перед тем, как поместить их в документ.Я не знаю, почему вы думаете, что не можете этого сделать, но вам нужно устранить все препятствия, мешающие этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...