Блок добавляется в геометрической прогрессии, а должен только один раз
Вложений: 3
Добрый день.
Прошу помощи. Задача у меня такая - вывести блок на страницу с результатом работы скрипта. Принцип действия следующий: 1. Страница с простой разметкой HTML. 2. При загрузки страницы по средствам JS-функции с AJAX-запросом запрашивается список сотрудников: $.ajax({ type: "POST", // метод отправки данных на сервер url: "../../inc/process.php", // адрес страницы, где будет обработан запрос data: { what: "showtable", table: table }, // данные, которые будут отправлены на сервер success: function(tableInfo){ // функция, которая будет вызвана в случае удачного завершения запроса к серверу // вставляем полученные из БД данные // захватываем форму и вставляем данные $("div#blocks div#blockLeft__table").html(tableInfo); } }) // после получения данных .then(function() { // Редактирование Сотрудника editWorkerForm(); }); return false; 3. После получения данных в списке сотрудников пользователь щелкает на иконку "Редактировать" и по средствам JS-функции editWorkerForm() открывается всплывающее окно с формой редактирования сведений о сотруднике. 4. В форме меняются данные или не меняются данные и пользователь нажимает на кнопку "Изменить запись". 5. При отправке данные при клике на кнопку "Изменить запись" срабатывает код в JS-функции editWorkerForm() function editWorkerForm(){ $("table.links a[class*=editWorker]").each(function(index, value){ // при клике на ссылку "Резолюция" $(this).on("click", function(e){ // прерываем действие по-умолчанию e.preventDefault(); // для скрытого поля ID входящего документа устанавливаем значение атрибута VALUE $("form.editWorker input[type=hidden][name=worker_id]").attr("value", $(this).attr("data-workerid")); // Отправляем форму редактирования Сотрудника $("form.editWorker").on("submit", function(f) { f.preventDefault(); // Формируем переменные // Массив параметров var workerParams = [ // ФИО Сотрудника $("form.editWorker input#worker_fio").val() // ID редактируемого сотрудника , $("form.editWorker input[type=hidden][name=worker_id]").val() ]; // AJAX-запрос - Редактирование сотрудника aq_editWorker(workerParams); }); }); }); } Внутри этой функции по средствам JS-функции aq_editWorker() по средствам AJAX-запроса отправляются данные на сервер и там обрабатываются по средствам PHP-функции: function aq_editWorker($post) { $workerParams["worker_fio"] = $post["workerParams"][0]; // ФИО Сотрудника $workerParams["worker_id"] = $post["workerParams"][1]; // ID редактируемого Сотрудника // Обновление сведений о сотруднике // Параметры: массив данных из БД // Возвращает массив из: результат изменения, массив ошибок, массив предупреждений, массив успешных результатов, массив неуспешных результатов $update = update_inDB_worker($workerParams); // Проверяем работу скрипта if(isset($update[1])){ echo createMessageBlock("../../", "errors", "ОЙ, ОШИБКИ", $update[1]); } else if(isset($update[2])){ echo createMessageBlock("../../", "warning", "ВНИМАНИЕ", $update[2]); } else if(isset($update[3])){ echo createMessageBlock("../../", "succes", "ПОЗДРАВЛЯЮ", $update[3]); } else if(isset($update[4])){ echo createMessageBlock("../../", "fail", "НЕУДАЧА", $update[4]); } } PHP-Функция update_inDB_worker() вносит изменения в запись в БД. Возвращает она массив из: результата обновления (TRUE/FALSE), массива ошибок, массив ошибок, массив предупреждений, массив успешных результатов, массив неуспешных результатов. 6. Код JS-функции aq_editWorker() $.ajax({ type: "POST", // метод отправки данных на сервер url: "../../inc/process.php", // адрес страницы, где будет обработан запрос data: { what: "editWorker", workerParams: workerParams }, // данные, которые будут отправлены на сервер success: function(workerUpdate){ // функция, которая будет вызвана в случае удачного завершения запроса к серверу console.log(workerUpdate); // Добавляем блок с результатом работы //$("div.pageTitle").after(workerUpdate); // Обновляем список Сотрудников aq_objectsList("workers"); // закрываем всплывающее окно hidePopupWindow("editWorker"); } }) // после получения данных .then(function() { }); return false; Проблема в выводе данных в переменной workerUpdate. В неё выводится блок с информацией о результате работы функции. Суть в том, что в рамках одной сессии работы (от момента загрузки страницы до момента её перезагрузки) сначала отображается один блок, потом два блока, потом три блока и т.д. Просьба помочь) Во вложении скрины для уточнения. |
Разобрался. Можно закрыть тему.
|
Часовой пояс GMT +3, время: 04:32. |