Способ построения вашей строки приведет к огромному объему сбора мусора.
Поскольку строка становится длиннее и длиннее, движок javascript должен продолжать выделять большие буферы и отбрасывать старые. В конце концов, он не сможет выделить достаточную память, не перерабатывая остатки всех старых строк.
Эта проблема ухудшается по мере увеличения длины строки.
Вместо этого попробуйте добавить новые элементы в DOM по одному с использованием jQuery-манипуляционного API
Также рассмотрите только визуализацию того, что видно, и выполните собственную прокрутку.
ПРИМЕЧАНИЕ: этот ответ относится только к веб-службам, если вы возвращаете JSON из метода контроллера, убедитесь, что вы также прочитали этот ответ SO ниже: https: / /stackoverflow.com/a/7207539/1246870
Свойство MaxJsonLength не может быть неограниченным, это целочисленное свойство, значение которого по умолчанию равно 102400 (100 КБ).
Вы можете установить свойство MaxJsonLength на своем веб-сайте .config:
<configuration>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000"/>
</webServices>
</scripting>
</system.web.extensions>
</configuration>
JsonResult result = Json(r);
result.MaxJsonLength = Int32.MaxValue;
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return result;
Вопрос в том, действительно ли вам нужно возвращать 17к записей? Как вы планируете обрабатывать все данные в браузере? В любом случае пользователи не собираются прокручивать 17000 строк.
Лучшим подходом является получение только «нескольких верхних» записей и загрузка дополнительных по мере необходимости.
Похоже, что не существует "неограниченного" значения. Значение по умолчанию - 2097152 символа, что эквивалентно 4 МБ строковых данных Unicode.
Как уже отмечалось, 17000 записей трудно использовать в браузере. Если вы представляете агрегированное представление, может быть гораздо эффективнее выполнить агрегирование на сервере и передать только сводку в браузере. Например, рассмотрим браузер файловой системы, мы видим только верхнюю часть дерева, а затем отправляем дальнейшие запросы по мере детализации. Количество записей, возвращаемых в каждом запросе, сравнительно невелико. Представление в виде дерева может хорошо работать для больших наборов результатов.
Вы можете настроить максимальную длину для json-запросов в файле web.config:
<configuration>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="....">
</jsonSerialization>
</webServices>
</scripting>
</system.web.extensions>
</configuration>
Значение по умолчанию для maxJsonLength - 102400 . Для получения дополнительных сведений см. Эту страницу MSDN: http://msdn.microsoft.com/en-us/library/bb763183.aspx