我有一个HTML表单,其中包含多个输入字段和一个非常特殊的输入字段,名为“ custom_1 ”。
提交表单时(之前或之前),其他输入字段中的所有值都应转换为JSON对象,并设置为 custom_1
的值如果这些值是预定义的,则以下代码可以完成我期望的操作。
<?php
$json = array(
'first_name' => 1,
'last_name' => 1,
'gender' => 1,
'email' => 'myemail@gmail.com',
'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 字段。这意味着这些值不是预定义的,应该从表单中的其他输入字段中获取。
提交表单并获取各个帖子参数不是我期望的。如上所述,所有参数都应包含在 custom_1 中。
答案 0 :(得分:0)
使用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字符串。
然后在“ custom_1”输入字段中将base64编码的字符串设置为值。