ограничение длины символа параметра javascript?

#c# #javascript #.net #visual-studio-2010

#c# #javascript #.net #visual-studio-2010

Вопрос:

Я отправляю функции javascript строку из-за кода в .net. Проблема в том, что длина строки превышает 200 символов, и функция javascript, похоже, не принимает строку. Существует ли ограничение на то, какой длины может быть переменная, и есть ли способ обойти это??

  If dr("ReturnType").ToString() = "Override" Then
                    Dim teststring As String = "openWin('" amp; dr("ReturnValue").ToString() amp; "');"
                    ScriptManager.RegisterStartupScript(Me, Me.[GetType](), "openWin", teststring, True)
                End If
  

Комментарии:

1. Пожалуйста, опубликуйте код, в котором вы определяете строку.

Ответ №1:

Да, есть ограничение: около 2 ГБ, это то, что вы можете хранить в строке в .NET. Но поскольку мы можем с уверенностью предположить, что вы не отправляете такой объем с сервера клиенту (или, по крайней мере, мы можем надеяться), другая возможность заключается в том, что ваша строка не закодирована. Поэтому закодируйте его перед отправкой клиенту. И лучший способ убедиться, что строка или объект правильно закодированы, — это сериализовать их в формате JSON. В .NET это может быть легко достигнуто с помощью класса JavaScriptSerializer:

 var value = new JavaScriptSerializer().Serialize("some string that contains ' and ".");
var script = string.Format("alert({0});", value);
ClientScript.RegisterStartupScript(GetType(), "someKey", script, true);
  

Ответ №2:

Нет.

Вы, вероятно, забыли экранировать строку.

Ответ №3:

Максимальная длина буквенной строки зависит от реализации, но в современных браузерах длина, вероятно, ограничена только объемом памяти, доступным вашему браузеру.

Например, я только что попробовал тест в Chrome, и он позволил мне использовать более 400 МБ памяти для одного строкового литерала, прежде чем я решил завершить процесс.