У меня есть JSON схема, где я генерирую Html форму, я думаю, что я что-то очень мало пропускаю, где я не могу сериализовать JSON правильно в нужном мне формате, jsonschema я использую для генерации HTML:
var fieldDefinitions =
"{
"inputs": [
{
"inputs": [
{
"inputs": [],
"type": "TEXT",
"description": null,
"name": "name",
"multiple": false
},
{
"inputs": [],
"type": "TEXT",
"description": null,
"name": "reason",
"multiple": false
}
],
"type": null,
"description": null,
"name": "requestMembershipInput",
"multiple": false
}
],
"constraints": [
{
"name": "mandatory_requestMembershipInput_name",
"expression": "requestMembershipInput?.name != null",
"explanation": "name is mandatory for MemberRequest",
"inputNames": [
"requestMembershipInput"
]
}
]
} "
Я использую javascript и ajax для генерации и сериализации данных формы для отправки на сервер. От сериализации я ожидаю, что это JSON будет произведено
{
"requestMemebershipInput" : {
"name": "test",
"reason": "111"
}
}```
I use javascript to generate the code i store jsonschema on variable fieldDefinitions just to clear the code i use below ``` var options = {
method: 'get',
action: '#action',
buttonLabel: 'Submit'
};
function wrappLabel(label, field) {
return '<div class="form-group"><label>' + label + '</label>' + field + '</div>';
}
const fieldType = {
TEXT: function (name, label) { return wrappLabel(label, '<input data-type="text" class="form-control" name="' + name + '" />'); },
};
var fieldDefinitions = @Html.Raw(@ViewBag.name);
function buildForm(fieldDefinition) {
var type = fieldDefinition.type;
var fullName = name.length > 0 ? name + '[' + fieldDefinition.name + ']' : fieldDefinition.name;
// var fullName = fieldDefinition.name;
if (type != null) {
return fieldType[type](fullName, fieldDefinition.name);
} else {
var result = '<fieldset>';
for (var input in fieldDefinition.inputs) {
result += buildForm(fieldDefinition.inputs[input], fullName)
}
return result + '</fieldset>';
}
}
for (var input in fieldDefinitions.inputs) {
var html = buildForm(fieldDefinitions.inputs[input], fieldDefinitions.name);
console.log(html);
$('#form1').append(html);
}});
, а затем я сериализирую это так
$(document).ready(function () {
$("#form1").on('submit', function (e) {
e.preventDefault();
var formData = JSON.stringify($('#form1').serialize());
console.log("stringgjhgjgjgjj", formData);
$.ajax({
url: "/Contract/Complex",
contentType: "application/json",
dataType: "json",
type: "POST",
data: formData,
redirect: 'follow',
success: function (data) {
// alert(data.message);
console.log(data);
},
error: function (xhr, resp, text) {
console.log(xhr, resp, text);
}
});
});
});```
the console shows serialized data in HTML I have two textboxes name and reason and that is ok, two textboxes I need
``` "name=sdsd&reason=sdsd" ``` but I expect to final result to send correct data in this format ```
{
"requestMemebershipInput" : {
"name": "test",
"reason": "111"
}
}```