Показать сообщение отдельно
  #14 (permalink)  
Старый 10.10.2017, 10:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Вот это - $('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 нужно делать недоступной, и вновь доступной после ответа сервера.
Ответить с цитированием