У меня есть HTML-форма с несколькими полями ввода и очень специальным полем ввода с именем «custom_1».
При отправке формы (в или ранее) все значения в других полях ввода должны быть преобразованы в объект JSON и установлены как значение custom_1
Если значения предопределены, следующий код может сделать то, что я ожидаю.
<?php
$json = array(
'first_name' => 1,
'last_name' => 1,
'gender' => 1,
'email' => '[email protected]',
'phone' => 345345431,
'telephone' => '035w34538',
'address' => 1,
'country' => 1,
'city' => 1,
'postal_code' => 1,
'dob' => '3333-03-03',
'nic' => '333333333V',
'course_provider' => 1,
'course' => 1,
'postal_code' => 10012
);
$custom_values = base64_encode(json_encode($json));
?>
<input type = "hidden" name = "custom_1" value = "<?php echo $custom_values; ?>">
Но проблема в том, что этот массив должен быть создан и присвоить значение полю custom_1 при отправке формы. Это означает, что значения не определены заранее и должны быть взяты из других полей ввода формы.
Submitting form and getting individual post parameters is not what I expect. All parameters should be taken into the custom_1 as explained above.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это просто использовать jquery (конечно, вы также можете использовать любую другую библиотеку)
Вот небольшой фрагмент кода:
https://codepen.io/YannickFricke/pen/EGwYgy
Соответствующая часть происходит здесь: Получаем массив объектов из jQuery. Нам нужно перебрать их, чтобы получить имя сериализованных полей ввода и их текущие значения.
Затем мы сохраняем их в объекте, который позже будет декодирован как JSON, а затем декодирован как значение base64.
let serializedData = $(this).serializeArray();
let myData = {};
serializedData.forEach(function(element) {
// We dont want to serialize the value of the "custom_1" input
if (element.name === 'custom_1') {
return;
}
// Set the data
myData[element.name] = element.value;
});
После этого мы кодируем объект как json и кодируем его как строку base64.
Затем строка в кодировке base64 устанавливается как значение в поле ввода "custom_1".
Вы что-нибудь пробовали? HTML-форма, обработчик onSubmit и т. д.