Как обработать запрос?
Всем добрый вечер! подскажите что не так с кодом? ajax запрос возвращает страницу целиком .
<script type="text/javascript">
const clients = document.querySelectorAll('#tbody-interactive > tr'); // находим все строки таблицы клиентов
if(clients != null){ // если есть хоть один
const modalInfo = document.querySelector('#modal-sysinfo'); // находим модальное окно
const modalBody = modalInfo.querySelector('div.modal-body'); // находим блок body
const modalForm = modalInfo.querySelector('form'); // находим форму в этом окне
const infoArea = modalBody.querySelector('textarea'); // находим поле ввода
const modalSubmit = modalInfo.querySelector('.info-submit'); // находим кнопку
const formContainer = document.createElement('div'); // создаем теневой блок для генерации formdata объектов
formContainer.setAttribute('style','position:fixed;top:0;left:0;visibility: hidden;'); // стли теневого блока
document.body.appendChild(formContainer); // добавляем пустой теневой блок в документ
const clientData = {};
infoArea.addEventListener('input', (event)=>{ // вешаем обработчик input на поле ввода
let id = event.target.dataset.id; // устанавливаем из дата атрибута текущий id, с которым работает поле
if (!clientData[id]) {
clientData[id] = {};
}
clientData[id].sysinfo = event.target.value.trim(); // пишем в объект елемент с ключом id['sysinfo'] введенное значение поля
});
for(let i = 0; i < clients.length; i++){ // перебираем строки таблицы и получаем для них текущие данные форм
clientData[clients[i].dataset.id] = getClientForm(clients[i].dataset.id); //пишем в объект елемент с ключом id данные формы со страницы edit
//let button = clients[i].querySelector('.btn-sysinfo');
}
function getClientForm(id){
(async () => { // получаем по id данные формы со страницы edit
let response = await fetch(location.href.replace('client/','client')+'?edit='+id); // формируем ссылку
let text = await response.text(); // получаем xbcnsq код html страницы
text = text.replace(/\t/gi,'').replace(/\n\n/gi,'\n').replace(' id="chkform"',''); // удаляем id у формы, табуляцию и лишние переносы строк
let formText = text.match(/<form[^>]*>([\s\S]*?)<\/form>/gi)[0]; // находим и вырезаем форму из кода
formContainer.innerHTML = formText; //вписываем форму в теневой блок для генерации formdata
let fData = new FormData(formContainer.querySelectorAll('form')[0]); // создаем объект formdata из текушей формы
console.dir(fData.get('sysinfo'));
console.dir(fData.get('ids_user_merge[]'));
return fData;
})() // возвращаем formdata из функции
}
function infoModal(id){ // создаем окно
let currentInfo = document.querySelector(`div.sysinfo[data-id="${id}"]`); //находим в текущей строке поле с 'sysinfo'
console.log(id);
infoArea.dataset.id = id; // вписываем текущий id в дата атрибут поля ввода
modalInfo.querySelector('.modal-title').innerHTML = 'Внутренняя/служебная информация # ' + id; //обновляем заголовок окна
modalInfo.querySelector('#areaid').value = id; // в скрытый input вписываем id
infoArea.value = currentInfo.textContent.trim(); // в поле ввода вписываем id текст из 'sysinfo'
//$('#infoarea').val($(`div.sysinfo[data-id="${id}"]`).text());
}
function updateInfo(event) {
// обновление инфы
event.preventDefault(); // блокируем штатное событие submit
const id = modalInfo.querySelector('#areaid').value ; // достаём id из скрытого инпута
$.ajax({
// формируем запрос
type: "POST", // тип запроса
url: "/auth/client?updateinfo=" + id, // урл запроса
cache: false, // отключаем кеш
data: clientData[id], //берем data из объекта по id
beforeSend: function () {
// перед отправкой блокируем кнопку визуально и влючаем анимацию загрузчика
$(modalSubmit).prop("disabled", true);
},
complete: function () {
$(modalSubmit).prop("disabled", false); // по завершению разблокируем кнопку и отлючаем анимацию загрузчика
},
success: function (data) {
// если все ок то выводим в консоль результат - текст 'success'
console.log("Успешно.");
console.log(data);
},
error: function (data) {
// если НЕ все ок то выводим в консоль результат - текст ошибки
console.log("Ошибка.");
console.log(data);
},
});
}
}
</script>
if (isset($_REQUEST['edit']) || isset($_REQUEST['updateinfo']))
{
$id = (int)$_REQUEST['edit'];
$currparams = db::i()->selectRow("select * from c_client where id = ".$id);
$updparams = array
(
'sysinfo' => $in['sysinfo']
);
<a onclick="infoModal( this.dataset.id )" class="btn btn-primary btn-sysinfo btn-sm" data-id="{{ row.id }}" role="button" data-toggle="modal" href="#modal-sysinfo"><span class="glyphicon glyphicon-pencil"></span></a>
<div class="modal fade" id="modal-sysinfo" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<!-- заголовок -->
<div class="modal-header" style="text-align:center;font-size:24px;">
<button type="button" class="close" data-dismiss="modal" aria-label="Закрыть">
<span aria-hidden="true">×</span>
</button>
<div class="modal-title"></div>
</div>
<form id="areatext" action='/' method="post" onsubmit="updateInfo(event);return false">
<input type="hidden" name="id" id="areaid">
<div class="modal-body">
<textarea class="form-control" style="overflow:auto;resize: vertical;height:300px;" name="infoarea" id="infoarea" rows="2" data-id="0" placeholder=""></textarea>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary w-100 info-submit" style="width:100%;" name="goclient">
<span class="submit-text">Сохранить</span>
<span id="spinnerContainer">
<svg class="spinner" id="appSpinner" width="24" height="30" viewBox="0 0 120 30" fill="#ffffff" hidden="true"><circle cx="15" cy="15" r="10"><animate attributeName="r" from="10" to="10" begin="0s" dur="0.8s" values="10;7;10" calcMode="linear" repeatCount="indefinite"></animate><animate attributeName="fill-opacity" from="1" to="1" begin="0s" dur="0.8s" values="1;.5;1" calcMode="linear" repeatCount="indefinite"></animate></circle><circle cx="60" cy="15" r="7" fill-opacity="0.3"><animate attributeName="r" from="7" to="7" begin="0s" dur="0.8s" values="7;10;7" calcMode="linear" repeatCount="indefinite"></animate><animate attributeName="fill-opacity" from="0.5" to="0.5" begin="0s" dur="0.8s" values=".5;1;.5" calcMode="linear" repeatCount="indefinite"></animate></circle><circle cx="105" cy="15" r="10"><animate attributeName="r" from="10" to="10" begin="0s" dur="0.8s" values="10;7;10" calcMode="linear" repeatCount="indefinite"></animate><animate attributeName="fill-opacity" from="1" to="1" begin="0s" dur="0.8s" values="1;.5;1" calcMode="linear" repeatCount="indefinite"></animate></circle></svg>
</span>
</button>
</div>
</form>
</div>
</div>
</div>