"Произошла ошибка при обработке данных. Повторите попытку."
Динамические входные данные, по-видимому, не распознаются при отправке формы, что препятствует успешному обновлению.
Разбивка проблемы:
Статические и динамические входные данные. Динамические входные данные:
Статические входные данные (полученные из базы данных) работают правильно.
Динамические входные данные (добавленные с помощью JavaScript) обрабатываются неправильно, что приводит к отсутствию значений в Массив $_POST.
Ожидаемое поведение:
Когда я нажимаю кнопку «Добавить строку», к таблице должна быть добавлена новая строка с полями, которые пользователь может заполнить ( должник, кредитор, описание и т. д.).
После отправки формы все значения как статических, так и динамических входных данных должны обрабатываться правильно.
Фактическое поведение:
Только значения статических входных данных распознаются в массиве $_POST.
Динамические поля возвращают пустые значения или не отправляются вообще, что приводит к появлению упомянутого выше сообщения об ошибке.
< strong>Код PHP и JavaScript:
Код: Выделить всё
$account = $antiXss->xss_clean($_POST["account"]);
$debtor = $_POST["debtor"];
$creditor = $_POST["creditor"];
$description = $antiXss->xss_clean($_POST["description"]);
$acc_serial = $antiXss->xss_clean($_POST["acc_serial"]);
$has_error = false;
foreach ($account as $index => $count) {
if (isset($account[$index]) && isset($debtor[$index]) && isset($creditor[$index]) && isset($description[$index]) && isset($acc_serial[$index])) {
$s_account = htmlspecialchars(strip_tags($antiXss->xss_clean($account[$index])));
$s_debtor = filter_var($debtor[$index], FILTER_SANITIZE_NUMBER_INT);
$s_creditor = filter_var($creditor[$index], FILTER_SANITIZE_NUMBER_INT);
$s_description = htmlspecialchars(strip_tags($antiXss->xss_clean($description[$index])));
$s_acc_serial = htmlspecialchars(strip_tags($antiXss->xss_clean($acc_serial[$index])));
if (empty($s_account) || $s_debtor == "" || $s_creditor == "" || empty($s_description) || empty($s_acc_serial)) {
echo ' $(document).ready(function(){ toastr.error("Please fill in all fields"); }) ';
$has_error = true;
break;
}
if ($s_debtor == $s_creditor) {
echo ' $(document).ready(function(){ toastr.error("Debtor and Creditor cannot be equal in the same row"); }) ';
$has_error = true;
break;
}
} else {
echo ' $(document).ready(function(){ toastr.error("An error occurred while processing the data. Please try again."); }) ';
var_dump($_POST["account"], $_POST["debtor"], $_POST["creditor"], $_POST["description"], $_POST["acc_serial"]);
$has_error = true;
break;
}
}
**
Код: Выделить всё
$('#dynamicAddRemove').on('change', '.select_acount', function() {
$(this).closest('tr').find('.acc_serial').val($(this).val()); });
$('#dynamicAddRemove').on('change', '.select_acount', function() {
$(this).closest('tr').find('.mount').val($(this).find("option:selected").text());
});
$(document).ready(function() {
$('.js-example-basic-single').select2();
});
var dataElement = document.getElementById('data');
var data = JSON.parse(dataElement.dataset.rows);
var product_dd = "";
product_dd += '';
product_dd += '--choose account--';
if (Array.isArray(data)) {
data.forEach(function(item) {
product_dd += '' + item.acc_name + '';
});
} else {
console.error("Error: Invalid data format");
}
product_dd += "";
var i = 0;
$("#add-btn").click(function() {
++i;
$("#dynamicAddRemove").append(''+
''+product_dd+''+
'[i]'+
''+
''+
''+
'[/i]'+
'');
$('.js-example-basic-single').select2();
});
Код: Выделить всё
Подробнее здесь: [url]https://stackoverflow.com/questions/79132350/issue-with-dynamic-input-fields-in-php-and-javascript-for-updating-journal-entri[/url]
Мобильная версия