Вот это - $('form[name="calcprojectform1"]')... тоже лишнее так как форма в обработчике изначально уже " в ваших руках", это this. Чтобы ее оперировать в последствии ее нужно просто "запомнить". То есть:
$('#calcprojectform1').on('submit', function (e) {
e.preventDefault();
var f = this; //это форма
//далее этой переменной оперировать
url: f.action,
type: f.method,
//......
//и в результате
f.reset(); //правда не понятно для чего, если далее она заменяется элементом DIV
$(f).replaceWith(....
Но если с прицелом на
"таким образом можно использовать этот обработчик для многих форм", то не должно быть $('#calcprojectform1'). Формы должны иметь общий для всех идентификатор, отправление которых будет обрабатываться этим обработчиком. Таким идентификатором может служить общее имя класса или часть имени класса/id.
Но и этого мало - должен быть единый "определенный протокол/логика" обмена данных между клиентом и сервером. Например, если формат всегда json (что не обязательно, и выгоднее не указывать его в dataType: 'json', а определять сервером через заголовки, клиент же на основе типа данных может поступать так или иначе), поместить некие данные в какой либо элемент на странице и выполнить некие функции сервером можно задать так:
['insert' =>['box1' => 'Text', 'box2' => '<p>HTML</p>'], 'exe' => ['fun1' => [1, 2], 'fun2' => 'abc']]
По приему такого json клиент определяет наличие в нем ключа 'insert' и если есть вставляет данные в элементы с id 'box1', 'box2', а также при наличии ключа 'exe' выполняет функции 'fun1' и 'fun2' с указанными аргументами, и которые прописаны например в каком либо объекте.
Это на заметку - так как ответ сервера не обязательно будет быстрым, на время запроса кнопку submit нужно делать недоступной, и вновь доступной после ответа сервера.