В одном из ближайших мест, где я вижу возможности для улучшения, вы объединяете свою reqString с помощью + и + =. Не делайте этого, вместо этого поместите каждый фрагмент в массив, а затем присоедините массив к «», а затем добавьте в документ.
var reqString = ['<table id="requirements_table"><thead><tr><th>Requirement ID</th><th>Requirements</th><th>Reference</th></tr></thead><tbody>'];
for (var i = 0; i < data.length; i++) {
reqString.push('<tr><td>', data[i].reqID, '</td><td>', data[i].reqText,'</td>','<td>', data[i].reqReference, '</td></tr>');
}
reqString.push('</tbody></table>');
$("#requirementsDiv").append(reqString.join(""));
Еще одно место, где стоит искать, - это использование $ .each. Попробуйте изменить его на обычный цикл for, так как $ .each не всегда так эффективен, как для.
В качестве примечания у вас есть ошибка в вашем скрипте, где вы добавляете '})', чтобы закрыть getReq.