Добрый день.
Прошу помощи.
Задача у меня такая - вывести блок на страницу с результатом работы скрипта.
Принцип действия следующий:
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. В неё выводится блок с информацией о результате работы функции. Суть в том, что в рамках одной сессии работы (от момента загрузки страницы до момента её перезагрузки) сначала отображается один блок, потом два блока, потом три блока и т.д.
Просьба помочь)
Во вложении скрины для уточнения.