Нет такого ограничения на длину строки. Чтобы быть уверенным, я только что протестировал, чтобы создать строку, содержащую 60 мегабайт.
Возможно, проблема в том, что вы отправляете данные в запросе GET, поэтому они отправляются в URL. Разные браузеры имеют разные ограничения для URL, где IE имеет самый низкий предел около 2 КБ. В целях безопасности никогда не следует отправлять в запросе GET больше данных, чем около килобайта.
Чтобы отправить столько данных, вы должны отправить их в виде запроса POST. В браузере нет жесткого ограничения на размер сообщения, но на сервере есть ограничение на размер запроса. Например, IIS имеет ограничение по умолчанию 4 МБ, но можно настроить ограничение, если вам когда-нибудь потребуется отправить больше данных, чем это.
Кроме того, вы не должны использовать + = для объединения длинных строк. Для каждой итерации необходимо перемещать все больше и больше данных, поэтому чем больше элементов у вас, тем медленнее и медленнее. Поместите строки в массив и объедините все элементы сразу:
var items = $.map(keys, function(item, i) {
var value = $("#value" + (i+1)).val().replace(/"/g, "\\\"");
return
'{"Key":' + '"' + Encoder.htmlEncode($(this).html()) + '"' + ",'+
'" + '"Value"' + ':' + '"' + Encoder.htmlEncode(value) + '"}';
});
var jsonObj =
'{"code":"' + code + '",'+
'"defaultfile":"' + defaultfile + '",'+
'"filename":"' + currentFile + '",'+
'"lstResDef":[' + items.join(',') + ']}';